2014-03-02 63 views
0

我在資產文件夾中有本地Json文件。在JsonObject中打開並編輯值

我使用此代碼打開文件

try { 
     is = getAssets().open("data.json"); 
     int size = is.available(); 
     byte[] buffer = new byte[size]; 
     is.read(buffer); 
     is.close(); 

     jsonString = is.toString(); 
     jsonString = new String(buffer,"UTF-8"); 

     myJson = new JSONObject(jsonString); 
     jsonArrayData = myJson.getJSONArray("diTich"); 
     int leng = jsonArrayData.length(); 
     for(int i = 0 ; i < leng ; i++) { 
      mTitle = jsonArrayData.getJSONObject(i).getString("title"); 
      mDescription = jsonArrayData.getJSONObject(i).getString("description"); 
      mAddress = jsonArrayData.getJSONObject(i).getString("address"); 
      mStatus = jsonArrayData.getJSONObject(i).getString("status"); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

我的JSON文件

{ 「ABCD」: { 「稱號」: 「ABCD」, 「說明」: 「abc」, 「address」:「bnc」, 「image」:「abcg」, 「status」:false } ] }

我在JsonObject中檢索到值。現在我想編輯這個值 例如,將鍵值「status」的值從false更改爲true。 我該怎麼做?我不知道寫替換它!

謝謝你們!

回答

1

您使用JSONObject類的JSONObject.put()方法。因此,在你的例子中,你可以這樣做:

jsonArrayData.getJSONObject(i).put("status", true); 

這將打破當前存在的值。

+0

嗨DavidCAdams!我試過你的方式,但價值不更新!你知道另一種方式嗎? –

+0

這可能是因爲JSONObject在JSONArray中。試試這個: JSONObject newObject jsonArrayData.getJSONObject(i); newObject.put(「status」,true); 如果您需要更改JSONArray,然後使用JSONArray.put()方法將新的JSONObject放入索引(i)的JSONArray中。 –

相關問題