2013-03-11 100 views
0

我有一個JSON從服務器來如下編輯JSON字段

{ 
    "XXXX": { 
     "type": "RSS", 
     "value": "" 
    }, 
    "YYYY": { 
     "type": "String", 
     "value": "" 
    }, 
    "ZZZZ": { 
     "type": "String", 
     "value": "" 
    } 
} 

現在我需要在所有XXXX,YYYY和ZZZZ的字段添加的String值。

我使用Eclipse和我需要改變XXXX「價值」和YYYY和ZZZZ的價值,我需要添加字段

{ 
    "MMMM": { 
     "type": "Image", 
     "value": "a7e8bec0-87ed-11e2-aa2e-52540025ab96_2_1362746556" 
    } 
} 

ZZZZ後。請讓我知道如何去做。

+1

你能請帶上更多細節。通過改變價值來表達你的意思是什麼?你在談論eclipse編輯器嗎? – 2013-03-11 09:02:18

+0

我需要添加新的字符串值,現在是「」 – user1340801 2013-03-11 09:04:58

+0

你想要更改json值嗎?控制器側面還是側面? – nav0611 2013-03-11 09:04:59

回答

4

試試這個

String jsonstring="{ 
    "XXXX": { 
     "type": "RSS", 
     "value": "" 
    }, 
    "YYYY": { 
     "type": "String", 
     "value": "" 
    }, 
    "ZZZZ": { 
     "type": "String", 
     "value": "" 
    } 
}"; 

JSONObject object=new JSONObject(jsonstring); 
JSONObject childobject=object.getJSONObject("XXXX"); 

JSONObject modifiedjson=new JSONObject(); 
modifiedjson.put("type",childobject.get("type")); 
modifiedjson.put("value","newvalue"); // Add new value of XXXX here 

// 

JSONObject mmjson=new JSONObject(); 
mmjson.put("type","image"); 
mmjson.put("value","a7e8bec0-87ed-11e2-aa2e-52540025ab96_2_1362746556"); // Add new value of MMM here 

JSONObject newjson=new JSONObject(); 
newjson.put("MMMM",mmjson.toString()); 
newjson.put("XXXX",modifiedjson.toString()); 
newjson.put("YYYY",object.get("YYYY")); 
newjson.put("ZZZZ",object.get("ZZZZ")); 
+0

是啊thanks.got它...有沒有什麼辦法讓我在XXXX,YYYY,ZZZZ取名字,即代表json數組節點的名稱。因爲XXXX或YYYY或ZZZZ的名稱可能會改變每次 ...??? – user1340801 2013-03-11 09:32:28

+0

你可以通過索引得到一個字符串,然後你可以轉換成一個jsonobject。你不需要在那裏的名字..不要忘記接受這個答案.. – Pragnani 2013-03-11 09:35:41

+0

好吧..但我有一個疑問在上述答案..當我得到XXXX的 JSONObject childobject = object.getJSONObject(「 XXXX「); 我需要更改XXXX字段的值,我該怎麼做? – user1340801 2013-03-11 09:43:20

0

如果它是一個字符串,您可以搜索指定的值並將新字符串連接起來。

如果它是JSON對象,則可以將新值添加到JSON對象並搜索要操作的值並將它們設置爲新值。

你現在在做什麼?你能告訴我們一些代碼嗎,所以我們知道,你到底在哪裏有問題?並顯示,請您如何訪問此代碼中的JSON。

+0

得到我需要添加一個字符串值的字段值在json..like我需要添加「你好」值在XXXX和YYYY和ZZZZ – user1340801 2013-03-11 09:17:42

0

用戶Java字符串替換方法來替換字符串。

帶你Json作爲字符串,然後通過字符串替換方法替換值。

這裏是一個小例子。

String replaceSample = "This String replace Example shows how to replace one char from 

String newString = replaceSample.replace('r', 't'); 

謝謝。

0
var source={ 
       "XXXX": { 
        "type": "RSS", 
        "value": "" 
       }, 
       "YYYY": { 
        "type": "String", 
        "value": "" 
       }, 
       "ZZZZ": { 
        "type": "String", 
        "value": "" 
       } 
      } 

和元素,你想添加

var element={ 
     "type": "Image", 
     "value": "a7e8bec0-87ed-11e2-aa2e-52540025ab96_2_1362746556" 
    }; 

你可以用下面的腳本做,

source["MMMM"]=element; 

source.MMMM=element; 
0

你可以做所有的操作在JavaScript本身。

允許用戶從服務器傳來的日期存入變量a

var a = { 
    "XXXX":{"type":"RSS","value":"}, 
    "YYYY (mins)":{"type":"String","value":""}, 
    "ZZZZ":{"type":"String","value":""} 
} 

要改變該值:

a['XXXX']['value'] = 'new_value1'; 
a['YYYY']['value'] = 'new_value2'; 
a['ZZZZ']['value'] = 'new_value3'; 

要添加字段:

a["MMMM"] = {"type":"Image","value":"a7e8bec0-87ed-11e2-aa2e-52540025ab96_2_1362746556"}} 
+0

我需要在客戶端做像控制器端不在客戶端的javascript..ie – user1340801 2013-03-11 09:15:29

3

我認爲你的意思

{"XXXX": 
{"type":"RSS","value":"}, 
"YYYY (mins)":{"type":"String","value":""}, 
"ZZZZ":{"type":"String","value":""} 

是您從服務器獲得的JSON。你總是可以得到JSONObject。根據需要,然後做類似的toString並對其進行編輯,

JSONObject obj = new JSONObject(myString); 

如果您需要添加一個鍵值到JSON,你可以嘗試,

JSONObject value = new JSONObject(); 
value.put("key","value"); 
value.put("key","value");//add all the field you want for ZZZZ. 
obj.put("ZZZZ",value);