Computer >> Máy Tính >  >> Lập trình >> Java

Cách mã hóa và giải mã mảng JSON Byte

Cách điển hình để gửi tệp nhị phân trong JSON là mã hóa base64. Java cung cấp các cách khác nhau để mã hóa và giải mã Base64 một byte []. Một trong số đó là DatatypeConverter.

Giả sử chúng ta có một Mảng JSON như được liệt kê bên dưới:

{
    "menu": {
        "id": "file",
        "value": "File",
        "popup": {
            "menuitem": [
                {"value": "New", "onclick": "CreateNewDoc()"},
                {"value": "Open", "onclick": "OpenDoc()"},
                {"value": "Close", "onclick": "CloseDoc()"}
            ]
        }
    }
}

Mã hóa JSON thành Base64

Để mã hóa JSON ở trên, chúng tôi sẽ sử dụng

String base64Encoded = DatatypeConverter.printBase64Binary(jsonBytes);

Có liên quan:

  • Cách phân tích cú pháp JSON trong Java
  • Cách chuyển đổi Java Map sang JSON
  • Cách chuyển đổi Đối tượng Java thành JSON

Giải mã Base64 JSON

Để giải mã một JSON được mã hóa base64, chúng tôi sẽ sử dụng

byte[] base64Decoded = DatatypeConverter.parseBase64Binary(base64Encoded);

Mã mẫu:

import javax.xml.bind.DatatypeConverter;

public class JsonEncodeDecode {

    public static void main(String[] args) {
        String json = "{\"menu\": {\n" +
                "  \"id\": \"file\",\n" +
                "  \"value\": \"File\",\n" +
                "  \"popup\": {\n" +
                "    \"menuitem\": [\n" +
                "      {\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"},\n" +
                "      {\"value\": \"Open\", \"onclick\": \"OpenDoc()\"},\n" +
                "      {\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}\n" +
                "    ]\n" +
                "  }\n" +
                "}}";

        byte[] bytes = json.getBytes();

        String base64Encoded = DatatypeConverter.printBase64Binary(bytes);
        System.out.println("Encoded Json:\n");
        System.out.println(base64Encoded + "\n");

        byte[] base64Decoded = DatatypeConverter.parseBase64Binary(base64Encoded);
        System.out.println("Decoded Json:\n");
        System.out.println(new String(base64Decoded));
    }
}

Đầu ra của JSON được mã hóa:

eyJtZW51IjogewogICJpZCI6ICJmaWxlIiwKICAidmFsdW
Lưu ý:JSON được mã hóa bị cắt bớt để gọn gàng, nếu không thì đó là một chuỗi rất dài.

Đầu ra của JSON được giải mã:

{
    "menu": {
        "id": "file",
        "value": "File",
        "popup": {
            "menuitem": [
                {"value": "New", "onclick": "CreateNewDoc()"},
                {"value": "Open", "onclick": "OpenDoc()"},
                {"value": "Close", "onclick": "CloseDoc()"}
            ]
        }
    }
}