2011-09-21 129 views
8

我需要在下面的Java构建的一种结构,并把它作为回应:我想一个JSONObject添加到JSONArray和JSONArray包括在其他的JSONObject

var abc = {"action":"Remove", 
     "datatable":[ 
      {"userid":"userid0","username":"name0"}, 
      {"userid":"userid1","username":"name1"}, 
      {"userid":"userid2","username":"name2"}, 
      {"userid":"userid3","username":"name3"} 
       ] 
    , 
     "msgType":"success"}; 

我做:

JSONArray jsonArray = new JSONArray(); 

for (loop) { 
    JSONObject jsonObj= new JSONObject(); 
    jsonObj.put("srcOfPhoto", srcOfPhoto); 
    jsonObj.put("username", "name"+count); 
    jsonObj.put("userid", "userid"+count); 

    jsonArray .add(jsonObj.toJSONString()); 
} 

Map paramMap = new HashMap(); 

paramMap.put("action", "remove"); 

paramMap.put("datatable", jsonArray); 

paramMap.put(Constant.MSG_TYPE , Constant.SUCCESS); 

getJSONMessage(paramMap); 

和herer上述功能被转换成paramMap JSON字符串等:

public static String getJSONMessage(Map<String, String> paramMap){ 
    if(paramMap != null && paramMap.size() > 0) 
     return JSONObject.toJSONString(paramMap); 
    else 
     return ""; 
} 

但它不是肌酐正确的结构,任何人都可以帮助我吗?

这里是我得到的输出:

{ “行动”: “删除”, “数据表”: “{\” 用户ID \ “:\” userid0 \”,\ “srcOfPhoto \”: \“用户名\\JMMBGTCHG.jpg \”,\“用户名\”:\“name0 \”}“],”msgType“:”成功“}

这是不是在javascript中解析。

var json = eval('(' + respText+')'); 
alert("contents>>"+json.datatable); 
alert("contents.datatable[0]>>>"+json.datatable[0].username); 

上次警报显示未定义。


喔对不起,我忘了最后一行粘贴,这里是最后一行:

getJSONMessage(paramMap); 

及以上功能转换paramMap成JSON字符串:

public static String getJSONMessage(Map<String, String> paramMap){ 
    if(paramMap != null && paramMap.size() > 0) 
     return JSONObject.toJSONString(paramMap); 
    else 
     return ""; 
} 
+0

我合并两个帐户在一起。 [请阅读关于基于Cookie的帐户的这个Faq条目。](http://meta.stackexchange.com/questions/44557/why-should-i-register-my-account/1228)另外,StackOverflow不是论坛;如果您有新问题,请提出一个新问题。如果你想在你的问题中包含更多信息,请[编辑](http://stackoverflow.com/posts/7497980/edit)。如果您想与其中一位已回答的人进行互动,您可以留下评论。 – Will

回答

16
JSONArray jsonArray = new JSONArray(); 

for (loop) { 
    JSONObject jsonObj= new JSONObject(); 
    jsonObj.put("srcOfPhoto", srcOfPhoto); 
    jsonObj.put("username", "name"+count); 
    jsonObj.put("userid", "userid"+count); 

    jsonArray.put(jsonObj.valueToString()); 
} 

JSONObject parameters = new JSONObject(); 

parameters.put("action", "remove"); 

parameters.put("datatable", jsonArray); 

parameters.put(Constant.MSG_TYPE , Constant.SUCCESS); 

为什么你是否在使用HashMap,如果你想要把它放入JSONObject?

编辑:按照http://www.json.org/javadoc/org/json/JSONArray.html

+3

没有'add(jsonObj)',但'put(jsonObj)'是可能的(它似乎也不需要转换成JSONString) –

+0

@SomeoneSomewhere:有添加方法: –

+0

toJSONString()的方法未定义类型JSONObject? – Basbous