2011-09-21 22 views
8

necesito más adelante tipo de estructura construida en Java y enviarlo como respuesta:Quiero añadir un JSONObject a un JSONArray y que JSONArray incluido en otra JSONObject

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

que estoy haciendo:

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); 

y ermöglichen por encima de la función es convertir paramMap en cadena JSON como:

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

pero no es creatinina ng la estructura correcta, ¿alguien puede ayudarme en esto?

aquí es lo que estoy recibiendo de salida:

{ "acción": "Eliminar", "tabla de datos": [ "{\" ID de usuario \ ": \" userid0 \", \ "srcOfPhoto \": \ "users \ /JMMBGTCHG.jpg \", \ "username \": \ "name0 \"} "]," msgType ":" success "}

que no está siendo analizado en javascript.

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

última alerta que muestra undefined.


ohh lo siento, se olvidó de pegar última línea, aquí es la última línea:

getJSONMessage(paramMap); 

y por encima de la función es convertir paramMap en cadena JSON:

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

He fusionado sus dos cuentas. [Lea esta entrada de Faq sobre cuentas basadas en cookies.] (Http://meta.stackexchange.com/questions/44557/why-should-i-register-my-account/1228) Además, StackOverflow no es un foro ; si tiene una nueva pregunta, por favor haga una nueva pregunta. Si desea incluir más información en su pregunta, por favor [edítela] (http://stackoverflow.com/posts/7497980/edit). Si desea interactuar con una de las personas que han respondido, puede dejarles un comentario. – Will

Respuesta

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); 

Por qué ¿Estabas usando un Hashmap si lo que querías era ponerlo en un JSONObject?

EDIT: Según http://www.json.org/javadoc/org/json/JSONArray.html

+3

no hay 'add (jsonObj)', pero 'put (jsonObj)' es posible (tampoco parece necesario convertir a JSONString) –

+0

@SomeoneSomewhere: Hay un método add: –

+0

El método toJSONString() no está definido para el tipo JSONObject? – Basbous