Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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
在java中合并两个带异常的映射_Java - Fatal编程技术网

在java中合并两个带异常的映射

在java中合并两个带异常的映射,java,Java,我想合并两个结构相似的地图: 这是第一张地图 { "Profile": { "Location": { "City": "Some City", "State": "Some State", "Country": "USA" } }, "TimeLine": { "LifeEvents": {

我想合并两个结构相似的地图:

这是第一张地图

   {
    "Profile": {
        "Location":
            {
                "City": "Some City",
                "State": "Some State",
                "Country": "USA"
            }
    },
    "TimeLine": {
        "LifeEvents": {
            "EventName": "Got Married",
            "Date": "15-01-2000"
        }
    }
}
第二张地图是:

{
    "Profile": {
        "Office": {
            "City": "New City",
            "State": "New State",
            "Country": "UK"
        }
    },
    "TimeLine": {
        "LifeEvents": {
            "EventName": "Got Engaged",
            "Date": "15-01-1999"
        }
    }
}
合并后,我希望它采用以下格式:

{
    "Profile": {
        "Office": {
            "City": "New City",
            "State": "New State",
            "Country": "UK"
        },
        "Location": {
            "City": "Some City",
            "State": "Some State",
            "Country": "USA"
        }
    },
    "TimeLine": {
        "LifeEvents": [
            {
                "EventName": "Got Engaged",
                "Date": "15-01-1999"
            },
            {
                "EventName": "Got Married",
                "Date": "15-01-2000"
            }
        ]
    }
}
我尝试的解决方案是:

private static Map merge(Map original, Map newMap) {

        for (Object key : newMap.keySet()) 
        {
             if (newMap.get(key) instanceof Map && original.get(key) instanceof Map) 
            {
                Map originalChild = (Map) original.get(key);
                Map newChild = (Map) newMap.get(key);
                original.put(key, merge(originalChild, newChild));
            } 
            else if (newMap.get(key) instanceof List && original.get(key) instanceof List)
            {
                List originalChild = (List) original.get(key);
                List newChild = (List) newMap.get(key);
                for (Object each : newChild)
                {
                    if (!originalChild.contains(each))
                    {
                        originalChild.add(each);
                    }
                }
            } else 
            {
                if(!original.containsKey(key)){
                    original.put(key, newMap.get(key));

                }

            }
        }
        return original;
    }

有什么建议我可以修改上面的方法来处理我的需求吗?尽管上面给出的映射的结构是JSON格式的,但假设您将得到映射作为merge方法的输入。我正在使用
new Gson().fromJson(map1String,Map.class)
用于将JSON转换为映射。

拥有第一个JSON
{{
,在位置之后,真的吗?你指的是什么要求?@Aubin抱歉,这是一个打字错误。修复了它。@Izruo它在第三个JSON结构中。你发布了一个解决方案,你想修改它,所以我实际上在问:修改的要求是什么?-抱歉,不清楚。