Comment convertir jsonSsortingng en JSONObject en Java

J’ai une variable de chaîne appelée jsonSsortingng :

 {"phonetype":"N95","cat":"WP"} 

Maintenant, je veux le convertir en object JSON. J’ai cherché plus sur Google mais je n’ai reçu aucune réponse attendue …

Utiliser la bibliothèque org.json :

 JSONObject jsonObj = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}"); 

À tous ceux qui cherchent encore une réponse:

 JSONParser parser = new JSONParser(); JSONObject json = (JSONObject) parser.parse(ssortingngToParse); 

Vous pouvez utiliser google-gson . Détails:

Exemples d’objects

 class BagOfPrimitives { private int value1 = 1; private Ssortingng value2 = "abc"; private transient int value3 = 3; BagOfPrimitives() { // no-args constructor } } 

(Sérialisation)

 BagOfPrimitives obj = new BagOfPrimitives(); Gson gson = new Gson(); Ssortingng json = gson.toJson(obj); ==> json is {"value1":1,"value2":"abc"} 

Notez que vous ne pouvez pas sérialiser les objects avec des références circulaires car cela se traduira par une récursion infinie.

(Désérialisation)

 BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class); ==> obj2 is just like obj 

Un autre exemple pour Gson:

Gson est facile à apprendre et à implémenter, vous devez savoir que ce sont les deux méthodes suivantes:

-> toJson () – Convertit un object java au format JSON

-> fromJson () – Convertit JSON en object Java

 import com.google.gson.Gson; public class TestObjectToJson { private int data1 = 100; private Ssortingng data2 = "hello"; public static void main(Ssortingng[] args) { TestObjectToJson obj = new TestObjectToJson(); Gson gson = new Gson(); //convert java object to JSON format Ssortingng json = gson.toJson(obj); System.out.println(json); } } 

Sortie

 {"data1":100,"data2":"hello"} 

Ressources:

Page d’accueil du projet Google Gson

Gson Guide de l’utilisateur

Exemple

Divers sérialiseurs et désérialiseurs Java JSON sont liés depuis la page d’accueil JSON .

Au moment d’écrire ces lignes, il y a ces 20:

  • org.json
  • org.json.me
  • Processeur Jackson JSON
  • Json-lib
  • Outils JSON
  • json-simple
  • Ssortingngtree
  • SOJO
  • Restlet
  • Abandonner
  • json-taglib
  • XStream
  • JsonMarshaller
  • Flexjson
  • Les outils JON
  • google-gson
  • Argo
  • Pivot
  • jsonij
  • fastjson

… mais bien sûr la liste peut changer.

Solution Java 7

 import javax.json.*; ... Ssortingng TEXT; JsonObject body = Json.createReader(new SsortingngReader(TEXT)).readObject() 

;

J’aime utiliser google-gson pour cela, et c’est précisément parce que je n’ai pas besoin de travailler directement avec JSONObject.

Dans ce cas, j’aurais une classe qui correspondrait aux propriétés de votre object JSON

 class Phone { public Ssortingng phonetype; public Ssortingng cat; } ... Ssortingng jsonSsortingng = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}"; Gson gson = new Gson(); Phone fooFromJson = gson.fromJson(jsonSsortingng, Phone.class); ... 

Cependant, je pense que votre question ressemble plus à: Comment puis-je finir avec un object JSONObject réel à partir d’une chaîne JSON.

Je regardais l’API google-json et je n’ai rien trouvé d’aussi simple que l’API d’org.json, probablement ce que vous voulez utiliser si vous avez vraiment besoin d’utiliser un object JSONObone.

http://www.json.org/javadoc/org/json/JSONObject.html

Avec org.json.JSONObject (une autre API complètement différente) Si vous voulez faire quelque chose comme …

 JSONObject jsonObject = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}"); System.out.println(jsonObject.getSsortingng("phonetype")); 

Je pense que la beauté de Google-gson est que vous n’avez pas besoin de traiter avec JSONObject. Vous venez de saisir json, de passer la classe à désérialiser et vos atsortingbuts de classe seront comparés au JSON, mais encore une fois, tout le monde a ses propres exigences, vous ne pouvez peut-être pas vous permettre le luxe d’avoir des classes pré-mappées sur le côté désérialisation car les choses peuvent être trop dynamics du côté de la génération JSON. Dans ce cas, utilisez simplement json.org.

vous devez importer org.json

 JSONObject jsonObj = null; try { jsonObj = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}"); } catch (JSONException e) { e.printStackTrace(); } 

Pour convertir Ssortingng en JSONObject vous suffit de passer l’instance Ssortingng dans le constructeur de JSONObject .

Par exemple:

 JSONObject jsonObj = new JSONObject("your ssortingng"); 

Si vous utilisez http://json-lib.sourceforge.net (net.sf.json.JSONObject)

c’est assez facile:

 Ssortingng myJsonSsortingng; JSONObject json = JSONObject.fromObject(myJsonSsortingng); 

ou

 JSONObject json = JSONSerializer.toJSON(myJsonSsortingng); 

récupère les valeurs avec json.getSsortingng (param), json.getInt (param) et ainsi de suite.

Utilisez JsonNode du fastxml pour l’parsing Json générique. Il crée en interne une carte de valeur de clé pour toutes les entrées.

Exemple:

 private void test(@RequestBody JsonNode node) 

chaîne d’entrée:

 {"a":"b","c":"d"} 

Convertir une chaîne en json et la piqûre est comme json. {“phonetype”: “N95”, “cat”: “WP”}

 Ssortingng Data=response.getEntity().getText().toSsortingng(); // reading the ssortingng value JSONObject json = (JSONObject) new JSONParser().parse(Data); Ssortingng x=(Ssortingng) json.get("phonetype"); System.out.println("Check Data"+x); Ssortingng y=(Ssortingng) json.get("cat"); System.out.println("Check Data"+y); 

Pour définir un object unique json à lister

 "locations":{ } 

dans la List

utilisation

 ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); 

jackson.mapper-asl-1.9.7.jar

Notez que GSON avec la désérialisation d’une interface entraînera une exception comme ci-dessous.

 "java.lang.RuntimeException: Unable to invoke no-args constructor for interface XXX. Register an InstanceCreator with Gson for this type may fix this problem." 

Pendant la désérialisation GSON ne sait pas quel object doit être intégré pour cette interface.

Ceci est résolu en quelque sorte ici .

Cependant, FlexJSON a cette solution par nature. pendant le temps de sérialisation, il ajoute le nom de la classe à json comme ci-dessous.

 { "HTTPStatus": "OK", "class": "com.XXX.YYY.HTTPViewResponse", "code": null, "outputContext": { "class": "com.XXX.YYY.ZZZ.OutputSuccessContext", "eligible": true } } 

Donc, JSON en sera plein; mais vous n’avez pas besoin d’écrire InstanceCreator qui est requirejs dans GSON.

Pas besoin d’utiliser une bibliothèque externe.

Vous pouvez utiliser cette classe à la place 🙂 (gère les listes paires, les listes nestedes et json)

 public class Utility { public static Map jsonToMap(Object json) throws JSONException { if(json instanceof JSONObject) return _jsonToMap_((JSONObject)json) ; else if (json instanceof Ssortingng) { JSONObject jsonObject = new JSONObject((Ssortingng)json) ; return _jsonToMap_(jsonObject) ; } return null ; } private static Map _jsonToMap_(JSONObject json) throws JSONException { Map retMap = new HashMap(); if(json != JSONObject.NULL) { retMap = toMap(json); } return retMap; } private static Map toMap(JSONObject object) throws JSONException { Map map = new HashMap(); Iterator keysItr = object.keys(); while(keysItr.hasNext()) { Ssortingng key = keysItr.next(); Object value = object.get(key); if(value instanceof JSONArray) { value = toList((JSONArray) value); } else if(value instanceof JSONObject) { value = toMap((JSONObject) value); } map.put(key, value); } return map; } public static List toList(JSONArray array) throws JSONException { List list = new ArrayList(); for(int i = 0; i < array.length(); i++) { Object value = array.get(i); if(value instanceof JSONArray) { value = toList((JSONArray) value); } else if(value instanceof JSONObject) { value = toMap((JSONObject) value); } list.add(value); } return list; } } 

Pour convertir votre chaîne JSON en hashmap, utilisez ceci:

 HashMap hashMap = new HashMap<>(Utility.jsonToMap( 

Mieux vaut aller plus org.json utilisant org.json lib. Faites simplement une approche très simple comme ci-dessous:

 JSONObject obj = new JSONObject(); obj.put("phonetype", "N95"); obj.put("cat", "WP"); 

Maintenant, obj est votre formulaire JSONObject converti de votre chaîne respective. C’est le cas si vous avez des paires nom-valeur.

Pour une chaîne, vous pouvez directement passer au constructeur de JSONObject . Si ce sera une json Ssortingng valide, alors d’accord, sinon une exception sera lancée.