Java 如何将JSONObject转换为字节数组,然后转换此字节数组以返回原始JSONObject?

Java 如何将JSONObject转换为字节数组,然后转换此字节数组以返回原始JSONObject?,java,json,amazon-web-services,serialization,bytearray,Java,Json,Amazon Web Services,Serialization,Bytearray,我在用电脑。假设我定义了一个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看起来像: {"Field

我在用电脑。假设我定义了一个
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
。然后,当我检索记录时,我需要将
字节缓冲符
转换为字节数组,然后获得原始的JSONObject。

这个怎么样

byte[] objAsBytes = obj.toString().getBytes("UTF-8");

我曾经尝试过,似乎很管用

@posal抱歉,我没有使用
JSONObject
的经验。你是说如果我只是将
JSONObject
表示为字符串,然后使用字符串到字节数组到字符串的转换,它应该保留
JSONObject
的原始结构吗?是的
JSONObject
有一个
toString
方法,它将为您提供JSON。它还应该有一个构造函数,它接受一个JSON
String
作为参数,将它从文本转换为
JSONObject
。JSON只是一个字符串,所以JSONObject只不过是所述字符串的表示。如果获得字符串的字节[],则始终可以重新创建对象。与base64编码相比,它有什么优势?