2013-03-11 128 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);