如何将两个JSON格式的Java字符串一起添加?

时间:2012-11-04 18:46:31

标签: java json

我有两个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}}  

在下面的程序中,这些上面的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);

    }

}

Tracker.java:

import org.json.JSONObject;

public class Tracker extends JSONObject{

}

当我运行上述内容时,输出

{user1={}, user2={}}

如果我使用它:

String totalString =  B + A ;

O / p是:

{user1={}, user3={}, user2={}}

请告诉我如何添加两个JSON字符串??

1 个答案:

答案 0 :(得分:5)

在顶层,JSON文档始终是单个对象数组。通过将两个字符串连接在一起,您就违反了这个主体。一个简单的解决方法是将两个值连接在一个数组中:

String totalString =  "[" + A + ", " + B + "]";

然后解析。或者你可以简单地一次解析一个JSON文档,然后追加或合并你的结果(我怀疑你想通过Map.putAll合并它们。)

鉴于userN键的值为空,您的JsonHelper类可能存在错误,但如果没有看到代码,则很难说。