Hoe om JSON Byte Array te kodeer en te dekodeer

Die tipiese manier om binêre in JSON te stuur, is om dit te base64. Java bied verskillende maniere om Base64 te kodeer en te dekodeer []. Een daarvan is DatatypeConverter.

Gestel ons het 'n JSON-reeks soos hieronder gelys:

{
'menu': {
'id': 'file',
'value': 'File',
'popup': {

'menuitem': [


{'value': 'New', 'onclick': 'CreateNewDoc()'},


{'value': 'Open', 'onclick': 'OpenDoc()'},


{'value': 'Close', 'onclick': 'CloseDoc()'}

]
}
} }


Kodeer JSON as Base64

Om die bogenoemde JSON te kodeer, sal ons dit gebruik


String base64Encoded = DatatypeConverter.printBase64Binary(jsonBytes);

Verwante:



Dekodeer Base64 JSON

Om 'n basis64-gekodeerde JSON te dekodeer, sal ons dit gebruik


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

Voorbeeld kode:

import javax.xml.bind.DatatypeConverter; public class JsonEncodeDecode {
public static void main(String[] args) {
String json = '{'menu': { ' +


' 'id': 'file', ' +


' 'value': 'File', ' +


' 'popup': { ' +


' 'menuitem': [ ' +


'
{'value': 'New', 'onclick': 'CreateNewDoc()'}, ' +


'
{'value': 'Open', 'onclick': 'OpenDoc()'}, ' +


'
{'value': 'Close', 'onclick': 'CloseDoc()'} ' +


' ] ' +


' } ' +


'}}';

byte[] bytes = json.getBytes();

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

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

Uitset van gekodeerde JSON:

eyJtZW51IjogewogICJpZCI6ICJmaWxlIiwKICAidmFsdW Nota:Die gekodeerde JSON word afgeknip ter wille van netheid, anders is dit 'n baie lang string.

Uitset van gedekodeerde JSON:

{
'menu': {
'id': 'file',
'value': 'File',
'popup': {

'menuitem': [


{'value': 'New', 'onclick': 'CreateNewDoc()'},


{'value': 'Open', 'onclick': 'OpenDoc()'},


{'value': 'Close', 'onclick': 'CloseDoc()'}

]
}
} }