有什么方法可以将相同属性的值从一个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中。
答案 0 :(得分:1)
您可以编写一个接受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));
}
}
或者您可以拥有自己的自定义类来扩展JSONObject并拥有一个新的方法副本,该副本接受另一个JSON并按字段复制。
public class JSON extends JSONObject {
private static final long serialVersionUID = 1L;
public void copy(JSON other) {
// implement copy logic by iterating over keySet etc
}
}
NOTE:
如果您的JSON具有简单的键值,那么上面将是非常简单的实现,如果您的JSON字符串具有复杂对象,数组等,那么您将为每个类型添加处理并执行深层复制/从src覆盖到dest。
答案 1 :(得分:0)
假设您的JSON对象的类型实现Map
,您可以这样做:
json1.replaceAll(json2::getOrDefault);
这会将json1
中的字段替换为json2
中的相应值。如果json2
没有给定字段,则会保留原样。