【问题标题】:how to merge 2 json? java, Android [duplicate]如何合并2个json? java,Android [重复]
【发布时间】:2016-03-07 22:50:12
【问题描述】:

我想要这些:

JSONObject json1 = { “一个”:“1”, “二”:“2”, “三”:“3” } JSON对象 json2 = { “四”:“4”, “五”:“5”, “六”:“6” }

像这样合并:

JSONObject 结果 = { “一个”:“1”, “二”:“2”, “三”:“3”, “四”:“4”, “五”:“5”, “六”:“6” }

putALL 方法不起作用,getNames 也不起作用。

【问题讨论】:

  • 将两者保存到一个数组中并加入一个数组。
  • 不是重复的,我之前搜索过

标签: java android


【解决方案1】:

手动

 JSONObject obj = new JSONObject("first json");
 JSONObject obj2 = new JSONObject("second json");
 Iterator<String> keys = obj2.keys();
 while( keys.hasNext() ) {
     String key =  keys.next();
     obj.put(key, obj2.optString(key);
 } 

编辑

或者如果您的JSONObject 包含不同类型的值,您可以使用opt(String key),它返回一个通用的Object。感谢@Selvin 指出这一点

检查错别字

【讨论】:

  • 当然它只适用于字符串属性...
  • 它适用于您的示例,这说明了这一点。
  • Interesting ... json.org API 没有检查属性类型的方法...所以不可能使其更通用...另一方面...删除最后一个@来自第一个 json 的 987654326@ 和来自第二个的第一个 { 并将那些带有逗号的字符串连接起来应该做的事情......
  • json 仍然有返回通用对象的get(key),它应该或多或少地涵盖@Selvin 的所有情况。字符串解决方案肯定会起作用,但我不喜欢它(我个人的口味)
  • 呃,忘了这个方法(或 opt(key) )......所以obj.put(key, obj2.opt(key))应该为其他类型做事情
【解决方案2】:

对于复杂类型:使用 java 类型:

1 转换成地图(没那么容易)

Convert a JSON String to a HashMap

2 附加地图

3 将地图转成json(简单)

新的 JSONObject(地图);

【讨论】:

    猜你喜欢
    • 2020-12-25
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2020-05-14
    • 2017-07-26
    • 1970-01-01
    相关资源
    最近更新 更多