Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.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 仅将相等属性的值从一个JSON复制到另一个JSON_Java_Json_Clone_Deep Copy - Fatal编程技术网

Java 仅将相等属性的值从一个JSON复制到另一个JSON

Java 仅将相等属性的值从一个JSON复制到另一个JSON,java,json,clone,deep-copy,Java,Json,Clone,Deep Copy,有没有办法只将相等属性的值从一个JSON复制到另一个JSON? 例如: json1- { "isMultiRow": true, "name": "Donny", "description": "Donnyboy" } json2- { "isMultiRow": false, "name": "Jonny", "description": "Jonny boy" "age": "old" "radius":"big" } 如果我做了类似于json1.copy

有没有办法只将相等属性的值从一个JSON复制到另一个JSON?
例如:

json1-

{
  "isMultiRow": true,
  "name": "Donny",
  "description": "Donnyboy"
}
json2-

{
  "isMultiRow": false,
  "name": "Jonny",
  "description": "Jonny boy"
  "age": "old"
  "radius":"big"
}
如果我做了类似于
json1.copy(json2)
的事情,我会得到json1-

{
  "isMultiRow": false,
  "name": "Jonny",
  "description": "Jonny boy"
}

age
radius
不会出现,因为它们在json1中不存在。

您可以编写一个自定义方法,该方法接受2个JSONObject和需要从一个src JSONObject复制到dest JSONObject的字段列表

private static void copy(JSONObject dest, JSONObject src, List<String> fields) {
    for (String key : fields) {
        dest.put(key, src.get(key));
    }
}

注意:
如果您的JSON有简单的键值,那么上面的实现将非常简单,如果您的JSON字符串有复杂的对象、数组等,那么您将为这些类型中的每一个添加处理,并从src到dest进行深度复制/覆盖

假设JSON对象的类型实现了
Map
,则可以执行以下操作:

json1.replaceAll(json2::getOrDefault);

这将用
json2
中相应的值替换
json1
中的字段。如果
json2
没有给定的字段,它将保持原样。

那么这些是字符串或任何类型的json表示对象?迭代json1中的属性,在json2中查找它们,如果找到,则复制值。您使用的json库是什么?如果json1的字段不在json2中怎么办?@Blackstar-请接受答案并投票,如果我的解决方案解决了你的问题!
json1.replaceAll(json2::getOrDefault);