【发布时间】:2014-11-23 18:49:59
【问题描述】:
我有一个从 JSONArray 转换而来的字节数组。现在如何将其转换回 JSONArray。有没有简单的库来做到这一点。还是我必须像this 帖子所说的那样使用base64?这是将 JSONArray 转换为 bytearray 的代码:
JSONArray arr = //some value;
byte[] bArr = arr.toString().getBytes();
【问题讨论】:
我有一个从 JSONArray 转换而来的字节数组。现在如何将其转换回 JSONArray。有没有简单的库来做到这一点。还是我必须像this 帖子所说的那样使用base64?这是将 JSONArray 转换为 bytearray 的代码:
JSONArray arr = //some value;
byte[] bArr = arr.toString().getBytes();
【问题讨论】:
private JsonArray convertByteArrayToJsonArray(byte[] yourByteArray) throws IOException {
try (ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(yourByteArray))) {
zipInputStream.getNextEntry();
try (JsonReader reader = Json.createReader(zipInputStream)) {
return reader.readArray();
}
}
}
【讨论】:
由于您在将 Json 数组字符串转换为字节时没有指定 CharSet。只需使用:
arr = new JSONArray(new String(bArr));
【讨论】:
在 json 中发送二进制文件的典型方法是对其进行 base64 编码。 Java 提供了不同的方式来 Base64 编码和解码一个字节[]。其中之一是 DatatypeConverter。
很简单
byte[] originalBytes = new byte[] { 1, 2, 3, 4, 5};
String base64Encoded = DatatypeConverter.printBase64Binary(originalBytes);
byte[] base64Decoded = DatatypeConverter.parseBase64Binary(base64Encoded);
【讨论】: