我有两个JSON格式字符串
{"user1":{"Iden":4,"nID":1},"user2":{"Iden":5,"nID":1}} // String A JSON
{"user1":{"Iden":4,"nID":1},"user3":{"Iden":6,"nID":1},"user2":{"Iden":5,"nID":1}}
Run Code Online (Sandbox Code Playgroud)
在下面的程序中,上面的JSON由Eclipse IDE格式化
这是我的计划:
import java.util.Map;
import org.codehaus.jackson.type.TypeReference;
import com.tradeking.at.util.JsonHelper;
public class Hi {
private static JsonHelper jsonHelper = JsonHelper.getInstance();
public static void main(String[] args) throws Exception {
Map<String, Tracker> totalCusts = null;
String A = "{\"user1\":{\"Iden\":4,\"nID\":1},\"user2\":{\"Iden\":5,\"nID\":1}}";
String B = "{\"user1\":{\"Iden\":4,\"nID\":1},\"user3\":{\"Iden\":6,\"nID\":1},\"user2\":{\"Iden\":5,\"nID\":1}}";
String totalString = A+B;
if (null != totalString) {
totalCusts = (Map<String, Tracker>) jsonHelper.toObject(
totalString, new TypeReference<Map<String, Tracker>>() {
});
}
System.out.println(totalCusts);
}
}
Run Code Online (Sandbox Code Playgroud)
Tracker.java:
import org.json.JSONObject;
public class Tracker extends JSONObject{
}
Run Code Online (Sandbox Code Playgroud)
当我运行以上时,输出是
{user1={}, user2={}}
Run Code Online (Sandbox Code Playgroud)
如果我用这个:
String totalString = B + A ;
Run Code Online (Sandbox Code Playgroud)
O/p是:
{user1={}, user3={}, user2={}}
Run Code Online (Sandbox Code Playgroud)
请告诉我如何添加两个JSON字符串?
在顶层,JSON文档始终是单个对象,数组或值.通过将两个字符串连接在一起,您就违反了这个主体.一个简单的解决方法是将两个值连接在一个数组中:
String totalString = "[" + A + ", " + B + "]";
Run Code Online (Sandbox Code Playgroud)
然后解析.或者你可以简单地一次解析一个JSON文档,然后追加或合并你的结果(我怀疑你想合并它们,通过Map.putAll).
鉴于你的userN键的值是空的,你的类中可能有一个bug JsonHelper,但是如果没有看到代码就很难说.