JSONObject中put/element/accumulate区别

来源:互联网 发布:男朋友生日礼物 知乎 编辑:程序博客网 时间:2024/05/17 06:39

在网上查了一下这些方法的差别,大都一样。

1.public Object put (Object key, Object value):
将key-value键值对存入,如果此JSONObject对象之前存在一个value在这个key下,当前的value会替换掉之前的value。

2.public JSONObject accumulate (String key, Object value):
累积value到这个key下。这个方法同element()方法类似,特殊的是,如果当前已经存在一个value在这个key下那么一个JSONArray将会存储在这个key下来保存所有累积的value。如果已经存在一个JSONArray,那么当前的value就会添加到这个JSONArray中。相比之下replace方法会替代先前的value

3.public JSONObject element (String key, Object value):
将键/值对放到这个JSONObject对象里面。如果当前value为空(null),那么如果这个key存在的话,这个key就会移除掉。如果这
个key之前有value值,那么此方法会调用accumulate()方法。

其实我想知道的,网上没有说出来。put与element如果你只是单纯的向JSONObject中添加元素的话,其实完全一样。不一样的是他们的返回值!!!

public Object put( Object key, Object value ) {      if( key == null ){         throw new IllegalArgumentException( "key is null." );      }      Object previous = properties.get( key );      element( String.valueOf( key ), value );      return previous;   }

put返回的是的key-value键值对的value,而element方法返回的是JSONObject;

 public JSONObject element( String key, Object value, JsonConfig jsonConfig ) {      verifyIsNull();      if( key == null ){         throw new JSONException( "Null key." );      }      if( value != null ){         value = processValue( key, value, jsonConfig );         _setInternal( key, value, jsonConfig );      }else{         remove( key );      }      return this;   }

结论:
我认为他们的最大的不同就是返回值了,put方法里面还是调用了element的方法。