Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Encode và Decode JSON Byte Array với Java Base64 - Hướng dẫn thực tế

Cách điển hình để gửi dữ liệu nhị phân trong JSON là base64 encode. Java cung cấp nhiều cách Base64 encode/decode byte[]. Một trong số đó là DatatypeConverter.

Giả sử có JSON Array như sau:

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

Encode JSON thành Base64

String base64Encoded = DatatypeConverter.printBase64Binary(jsonBytes);
  • Cách parse JSON trong Java
  • Cách chuyển Java Map sang JSON
  • Cách chuyển Java Object sang JSON

Decode Base64 JSON

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

Ví dụ code đầy đủ:

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));
    }
}

Kết quả JSON đã encode (đã rút gọn):

eyJtZW51IjogewogICJpZCI6ICJmaWxlIiwKICAidmFsdW 

Lưu ý: Chuỗi encoded rất dài, đã cắt bớt cho gọn.

Kết quả JSON đã decode:

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