Har*_*rry 50 java android json
可以说我给了一个JSONObject
{
"person":{"name":"Sam", "surname":"ngonma"},
"car":{"make":"toyota", "model":"yaris"}
}
Run Code Online (Sandbox Code Playgroud)
如何更新JSONObject中的某些值?
如下所示:
String name = jsonArray.getJSONObject(0).getJSONObject("person").getString("name");
name = "Sammie";
Run Code Online (Sandbox Code Playgroud)
cow*_*wls 103
使用put方法:https://developer.android.com/reference/org/json/JSONObject.html
JSONObject person = jsonArray.getJSONObject(0).getJSONObject("person");
person.put("name", "Sammie");
Run Code Online (Sandbox Code Playgroud)
rai*_*mar 25
删除键,然后再次添加修改后的键,值对,如下所示:
JSONObject js = new JSONObject();
js.put("name", "rai");
js.remove("name");
js.put("name", "abc");
Run Code Online (Sandbox Code Playgroud)
我没有用过你的例子; 但在概念上也一样.
您好,我可以建议您使用通用方法。使用递归。
public static JSONObject function(JSONObject obj, String keyMain,String valueMain, 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;
}
Run Code Online (Sandbox Code Playgroud)
它应该工作。如果您有任何疑问,请继续..我准备好了。