如何将一个 JSONObject 转换为字节数组,然后再将这个字节数组转换回原始的 JSONObject?

8
我将使用AWS JSONObject。假设我像这样定义了一个JSONObject对象:
JSONObject obj = new JSONObject();
obj.put("Field1": 35);

JSONObject nestedObj = new JSONObject();
nestedObj.put("Name1":"value1");
nestedObj.put("Name2":42);

obj.put("Field2": nestedObj);

所以 JSONObject 看起来像这样:
{"Field1": 35,
 "Field2": {"Name1": "value1",
            "Name2": 42}
}

我想将这个 JSONObject 转换为字节数组:

byte[] objAsBytes = convertToBytes(obj);

其中convertToBytes是一个能够正确执行此操作的函数。然后,我想将此字节数组转换回原始的JSONObject,以便仍保留其原始结构。

有人知道如何做到这一点吗?我想这样做是因为我正在使用Amazon Kinesis,更具体地说是PutRecord API和PutRecordRequest需要数据为ByteBuffer,因此我需要将JSONObject转换为字节数组,然后将字节数组包装为ByteBuffer。然后,当我检索记录时,我需要将ByteBuffer转换为字节数组,然后获取原始的JSONObject。


@Pillar 对不起,我不太熟悉使用“JSONObject”。您是在暗示我只需要将“JSONObject”表示为字符串,然后使用字符串到字节数组到字符串的转换就可以保留“JSONObject”的原始结构吗? - Drew
1
是的,JSONObject 有一个 toString 方法,它会给你一个 JSON 的文本 String 表示。它还应该有一个构造函数,接受一个 JSON String 作为参数,将其从文本转换为 JSONObject - Savior
1
JSON只是一个字符串,因此JSONObject不过是该字符串的表示。如果您获取该字符串的byte[],则始终可以重新创建对象。 - dambros
1个回答

6
这个怎么样呢?
byte[] objAsBytes = obj.toString().getBytes("UTF-8");

我使用Json.simple进行尝试,看起来可以工作!


它相对于base64编码有什么优势? - Ayyappa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接