Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

JSON 바이트 배열을 인코딩 및 디코딩하는 방법

JSON에서 바이너리를 보내는 일반적인 방법은 base64로 인코딩하는 것입니다. Java는 byte[]를 Base64로 인코딩 및 디코딩하는 다양한 방법을 제공합니다. 그 중 하나가 DatatypeConverter입니다.

아래와 같은 JSON 배열이 있다고 가정합니다.

{
    "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 지도를 JSON으로 변환하는 방법
  • Java 객체를 JSON으로 변환하는 방법

Base64 JSON 디코딩

base64로 인코딩된 JSON을 디코딩하려면

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()"}
            ]
        }
    }
}