Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีเข้ารหัสและถอดรหัส JSON Byte Array

วิธีทั่วไปในการส่งไบนารีใน JSON คือการเข้ารหัส base64 Java มีวิธีต่างๆ ในการเข้ารหัส Base64 และถอดรหัสไบต์[] หนึ่งในนั้นคือ DatatypeConverter

สมมติว่าเรามี JSON Array ตามรายการด้านล่าง:

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

เข้ารหัส JSON เป็น Base64

ในการเข้ารหัส JSON ด้านบน เราจะใช้

String base64Encoded = DatatypeConverter.printBase64Binary(jsonBytes);

ที่เกี่ยวข้อง:

  • วิธีแยก JSON ใน Java
  • วิธีการแปลง Java Map เป็น JSON
  • วิธีการแปลง Java Object เป็น JSON

ถอดรหัส Base64 JSON

ในการถอดรหัส JSON ที่เข้ารหัส base64 เราจะใช้

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

โค้ดตัวอย่าง:

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

เอาต์พุตของ JSON ที่เข้ารหัส:

eyJtZW51IjogewogICJpZCI6ICJmaWxlIiwKICAidmFsdW
หมายเหตุ:JSON ที่เข้ารหัสจะถูกตัดทอนเพื่อความเรียบร้อย ไม่เช่นนั้นจะเป็นสตริงที่ยาวมาก

เอาต์พุตของ JSON ที่ถอดรหัสแล้ว:

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