Dans Java ( en utilisant json-simple ) j'ai réussi à analyser une chaîne JSON qui a été créée en JavaScript en utilisant JSON.stringify. Cela ressemble à ceci:
{"teq":14567,"ver":1,"rev":1234,"cop":15678}
Cette chaîne stocke l'état d'un objet JavaScript personnalisé que je souhaite maintenant reconstituer en tant que classe Java pure. Cela ne va pas bien - première incursion dans Java provenant d'un arrière-plan C #. :-p
L'objet est actuellement sous la forme d'un org.json.simple.JSONObject car c'est ce que json-simple a fait à partir de l'opération JSONParser.parse ().
Comment puis-je convertir ce JSONObject dans ma nouvelle classe Java? (dont la définition est ci-dessous ...)
public class MyCustomJSObject {
public int teq;
public int ver;
public int rev;
public int cop;
}
utiliser la bibliothèque jackson
//create ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
//convert json string to object
Employee emp = objectMapper.readValue(jsonData, Employee.class);
Ajouter une dépendance de https://github.com/google/gson et l'utiliser comme
Gson gson= new Gson();
CustomPOJOClass obj = gson.fromJson(jsonObject.toString(),CustomPOJOClass.class);
Il y a beaucoup de bibliothèques qui font ça. Voici ma suggestion. Ici vous pouvez trouver la bibliothèque
import com.google.gson.Gson;
puis faites,
Gson gson = new Gson();
Student student = gson.fromJson(jsonStringGoesHere, Student.class);
Dépendance Maven
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
Chaîne JSON à Java Class? Vous pouvez essayer fastjson:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>
et en utilisant Java code:
MyCustomJSObject object = JSON.parseObject(jsonString,MyCustomJSObject.class);
Quelques années se sont écoulées depuis que cette question (devenue populaire) a été posée. Bien que je convienne encore que json-simple était mon besoin à l'époque, après réflexion, je pense que la communauté SO est mieux servie en ayant la "coche" à côté de la solution Jackson. Je ne suis pas- accepter ma propre réponse aujourd'hui, Jackson est plutôt génial!
Je pense que cette bibliothèque json-simple décente est victime d'une mauvaise documentation. Si vous n'utilisez pas le JSONParser (allez comprendre!) Mais utilisez plutôt cette méthode JSONValue.parse (), tout fonctionne comme ceci:
//JSONParser parser = new JSONParser(); // DON'T USE THIS
Object obj = JSONValue.parse("A JSON string - array of objects: [{},{}] - goes here");
JSONArray arrFilings = (JSONArray)obj;
System.out.println("We can print one this way...");
System.out.println(arrFilings.get(5) + "\n");
System.out.println("We can enumerate the whole array...");
for(Object objFiling : arrFilings){
System.out.println(objFiling);
}
System.out.println("\n");
System.out.println("We can access object properties this way...");
for(Object objFiling : arrFilings){
JSONObject o = (JSONObject)objFiling; // MUST cast to access .get()
MyJSObject.fyq = o.get("fyq");
}
System.out.println("\n");
Merci à tous ceux qui ont posté. Rester avec json-simple était la question et c'est la seule réponse json-simple à ce jour. Jackson a l'air lisse, et Amazon l'utilise dans leur SDK pour Java aussi, sooo .... si c'est assez bon pour AWS ....