2010-10-21 4 views
0

J'essaye d'analyser l'objet JSON dans Java. Je posterai objet JSON valeur de clé en utilisant la méthode dojo.xhrPost() comme indiqué ci-dessous:Comment analyser l'objet JSON en Java:

dojo.xhrPost({ 
url: /esturl/, 
handleAs : "text", 
content : {INST1 : {"0001" : "aa"}, 
      INST2 : {"0002" : "bb"}, 
      INST3 : {"0003" : "cc"}}, 
load : load(data), 
error : error 
}); 

Maintenant, je suis en train de lire ces données post de contexte de demande:

Map<String, String[]> paramMap = requestContext.getParameterMap(); 

quand j'imprime cela en boucle:

Iterator it = paramMap.entrySet().iterator(); 
while(it.hasnext()){ 
Map.entry pairs = (Map.Entry) it.next(); 
System.out.println(pairs.getKey()); 
System.out.println(pairs.getkValue()); 

} 

cela me retourne:

INST1 
[Ljava.lang.String;@1b4cef 
INST2 
[Ljava.lang.String;@5801d 

comme sage, mais je devrais obtenir des valeurs comme

INST1 : {"0001" : "aa"}, INST2 : {"0002" : "bb"}, INST3 : {"0003" : "cc"}}, toute indication serait très appréciée.

Mise à jour

Lorsque je tente d'obtenir la valeur d'un paramètre à l'aide

String[] X = requestContext.getParameters{"INST1"}; 

if (X != null){ 
    System.out.println(X.length); 
    System.out.println(X[0]); 
    System.out.println(X[0].length); 
} 

puis je reçois:

1 
[object Object] 
[object Object] 

Q Maintenant, comment puis-je obtenir des valeurs réelles de Objet comme INST1 : {"0001" : "aa"} au lieu de [objet objet]?

+0

[Ljava.lang.String; @ 1b4cef - Le 'L' signifie ici que c'est un tableau. SO peut être varialbe INST1 prend les valeurs comme un tableau de chaînes –

+0

@Gaurav: Oui, c'est vrai, mais comment puis-je le lire? Je veux aller plus loin mais je ne suis pas capable de le lire à ce moment-là et je ne peux donc pas faire de traitement supplémentaire, aucune suggestion? – Rachel

Répondre

1

comme indiqué dans la documentation dojo here l'objet que vous définissez sera lu comme nom1 = valeur1. Donc peut être dans votre cas les variables sont passées comme INST1 = 0001, INST1 = aa.

Vous pouvez essayer de faire la syntaxe du « contenu » sur ces lignes - passer le code JSON brut INST1 : '{"0001" : "aa"}' ou INST1 : "{\"0001\" : \"aa\"}" de telle sorte que INST1 a 1 valeur sans ambiguïté

+0

Oui, maintenant je suis en mesure d'obtenir des valeurs comme prévu, je n'ai jamais pensé qu'il y aurait un tel problème, merci Gaurav pour vos conseils. – Rachel

2

vous pouvez utiliser cette modification JSONObject class, par le constructeur ou créer (nouvel objet et affecter du contenu JSON plus tard ..) et utiliser intégré get méthodes. voir plein javadoc here.

Questions connexes