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。它还应该有一个构造函数,它接受一个JSONString
作为参数,将它从文本转换为JSONObject
。JSON只是一个字符串,所以JSONObject只不过是所述字符串的表示。如果获得字符串的字节[],则始终可以重新创建对象。与base64编码相比,它有什么优势?