更新JSONObject中的元素

比方说,我给了一个JSONObject

{ "person":{"name":"Sam", "surname":"ngonma"}, "car":{"make":"toyota", "model":"yaris"} } 

如何更新JSONObject中的一些值?

如下所示:

 String name = jsonArray.getJSONObject(0).getJSONObject("person").getString("name"); name = "Sammie"; 

Solutions Collecting From Web of "更新JSONObject中的元素"

使用put方法: https : //developer.android.com/reference/org/json/JSONObject.html

 JSONObject person = jsonArray.getJSONObject(0).getJSONObject("person"); person.put("name", "Sammie"); 

删除键,然后再次添加修改的键,值对,如下所示:

  JSONObject js = new JSONObject(); js.put("name", "rai"); js.remove("name"); js.put("name", "abc"); 

我没有用过你的榜样; 但在概念上是一样的。

你好,我可以build议你通用的方法。 使用recursion。

  public static JSONObject function(JSONObject obj, String keyMain, String newValue) throws Exception { // We need to know keys of Jsonobject JSONObject json = new JSONObject() Iterator iterator = obj.keys(); String key = null; while (iterator.hasNext()) { key = (String) iterator.next(); // if object is just string we change value in key if ((obj.optJSONArray(key)==null) && (obj.optJSONObject(key)==null)) { if ((key.equals(keyMain)) && (obj.get(key).toString().equals(valueMain))) { // put new value obj.put(key, newValue); return obj; } } // if it's jsonobject if (obj.optJSONObject(key) != null) { function(obj.getJSONObject(key), keyMain, valueMain, newValue); } // if it's jsonarray if (obj.optJSONArray(key) != null) { JSONArray jArray = obj.getJSONArray(key); for (int i=0;i<jArray.length();i++) { function(jArray.getJSONObject(i), keyMain, valueMain, newValue); } } } return obj; } 

这应该是工作。 如果你有问题,就去吧..我准备好了)