Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将两个JSON格式的Java字符串添加到一起?_Java_Json - Fatal编程技术网

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

如何将两个JSON格式的Java字符串添加到一起?,java,json,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由EclipseIDE格式化 这是我的节目: import java.util.Map; import org.c

我有两个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由EclipseIDE格式化

这是我的节目:

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);

    }

}
当我运行上面的程序时,输出是

{user1={}, user2={}}
如果我使用这个:

String totalString =  B + A ;
O/p为:

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

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

在顶层,JSON文档始终是单个对象、数组或值。仅仅将两个字符串连接在一起,就违反了这个原则。一个简单的解决方法是将两个值合并到一个数组中:

String totalString =  "[" + A + ", " + B + "]";
然后进行解析。或者,您可以简单地一次解析一个JSON文档,然后追加或合并结果(我怀疑您希望通过
Map.putAll
)合并它们)


考虑到
userN
键的值为空,您的
JsonHelper
类中可能有一个bug,但如果不查看代码,这很难说。

在顶层,JSON文档始终是单个对象数组。仅仅将两个字符串连接在一起,就违反了这个原则。一个简单的解决方法是将两个值合并到一个数组中:

String totalString =  "[" + A + ", " + B + "]";
然后进行解析。或者,您可以简单地一次解析一个JSON文档,然后追加或合并结果(我怀疑您希望通过
Map.putAll
)合并它们)


鉴于
userN
键的值为空,您的
JsonHelper
类中可能有一个bug,但是如果没有看到代码,这很难说。

B
已经包含了
A
的所有内容,那么为什么要连接它?您希望输出是什么样子?
B
已经包含
A
的所有内容,那么为什么要连接它?您希望输出是什么样子?