Liste<Map<String,Object>> de org.json.JSONObject?
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("abc", "123456");
map.put("def", "hmm");
list.add(map);
JSONObject json = new JSONObject(list);
try {
System.err.println(json.toString(2));
} catch (JSONException e) {
e.printStackTrace();
}
Quel est le problème avec ce code?
La sortie est:
{"empty": false}
Vous devez vous connecter pour publier un commentaire.
bien, essayez ce~ Cela a fonctionné pour moi 😀
Vous avez besoin pour terminer avec une JSONArray (correspondant à la Liste) de JSONObjects (la Carte).
Essayer de déclarer la variable json comme un JSONArray au lieu d'un JSONObject (je crois que les JSONArray constructeur de faire la bonne chose).
Aussi: vous pouvez envisager d'utiliser un des autres analyseurs de json.org la liste: la plupart d'entre eux permettent à votre Json "objets" et des "tableaux" à la carte en mode natif à java.util.Cartes et java.util.Les listes; ou, dans certains cas, de véritables objets Java aussi.
Ma recommandation serait Jackson, http://jackson.codehaus.org/Tutorial
qui permet pour la cartographie de la Liste/Carte/Integer/String/Boolean/null, ainsi qu'à de vrais Haricots/Pojo. Juste lui donner le type et les cartes de données pour vous, ou écrit en Java les objets Json.
D'autres, comme "json-outils" de berlios, google ou gson également exposer des fonctionnalités similaires.
Vous avez une carte imbriquée à l'intérieur d'une liste. vous tentez d'appeler la Carte, sans jamais en parcourant la liste de la première. JSON se sent parfois comme de la magie, mais en fait il ne l'est pas.
Je vais poster un peu de code dans un instant.
Il serait plus cohérent avec JSON pour faire une Carte de Cartes au lieu d'une Liste de Cartes.
Cela a fonctionné pour moi:
Si vous utilisez org.json.simple.JSONArray
(https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple/1.1.1)
Vous pouvez le faire en utilisant à la fois:
JSONArray
comme directement,Ou par l'itération de la liste avec Java8 (comme @ShadowJohn solution):