Json字符串到Json数组

时间:2018-03-29 09:30:17

标签: java json

美好的一天!

我有一个像这样的json对象数组:

[{
   "senderDeviceId":0,
   "recipientDeviceId":0,
   "gmtTimestamp":0,
   "type":0
 }, 
 {
  "senderDeviceId":0,
  "recipientDeviceId":0,
  "gmtTimestamp":0,
   "type":4
 }]

由于某些原因,我需要拆分每个元素并保存到存储。最后我有很多像

这样的对象
{ "senderDeviceId":0,
  "recipientDeviceId":0,
  "gmtTimestamp":0,
  "type":0
}
{
  "senderDeviceId":0,
  "recipientDeviceId":0,
  "gmtTimestamp":0,
  "type":4
} 

一段时间后,我需要将它们中的一些组合成json数组。 正如我所看到的 - 我可以从存储中获取对象,使用Gson将它们转换为对象,将对象转换为列表,如下所示:

 String first = "..."; //{"senderDeviceId":0,"recipientDeviceId":0,"gmtTimestamp":0,"type":0}
 String second = "...";//{"senderDeviceId":0,"recipientDeviceId":0,"gmtTimestamp":0,"type":4}

 BaseMessage msg1 = new Gson().fromJson(first, BaseMessage.class);
 BaseMessage msg2 = new Gson().fromJson(second, BaseMessage.class);

 List<BaseMessage> bmlist = new ArrayList<>();
 bmlist.add(msg1);
 bmlist.add(msg2);
 //and then Serialize to json

但我想这不是最好的方法。有没有办法将许多json-strings组合成json数组?我匆匆这样做了:

JsonElement elementTm = new JsonPrimitive(first);
JsonElement elementAck = new JsonPrimitive(second);

JsonArray arr = new JsonArray();
arr.add(elementAck);
arr.add(elementTm);

但是JsonArray给了我带json的转义字符串 - 就像这样 -

["{
     \"senderDeviceId\":0,
     \"recipientDeviceId\":0,
     \"gmtTimestamp\":0,
     \"type\":4
 }"," 
 {
     \"senderDeviceId\":0,  
     \"recipientDeviceId\":0,  
     \"gmtTimestamp\":0,  
     \"type\":0  
  }"]

我该怎么做? 谢谢。

1 个答案:

答案 0 :(得分:1)

冒着让事情变得简单的风险:

String first = "..."; 
String second = "...";

String result = "[" + String.join(",", first, second) + "]";

为您保存反序列化/序列化循环。