Parsing json

Fermé
Kilkenny95 Messages postés 157 Date d'inscription lundi 24 septembre 2018 Statut Membre Dernière intervention 31 août 2020 - Modifié le 8 nov. 2019 à 11:59
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 8 nov. 2019 à 17:47
Bonjour,

J'aimerais parser mon json qui se trouve dans un StringBuffer. Je comprends que ce que mon APi me renvoi avec monde est de type Array non un JSON, mais comment faire piur parser directement mon Array, ou comment transformer mon Array en JSON Object ?


 String reponseBrut = new String(responseContent.toString()); 
  
  JsonObject jsonObject = new JsonParser().parse(reponseBrut).getAsJsonObject();
  
  System.out.println(jsonObject.get("name").getAsString());



erreur :

Exception in thread "main" java.lang.IllegalStateException: Not a JSON Object: [{"id":1,"name":"Leanne Graham","username":"Bret","email":"Sincere@april.biz","address":{"street":"Kulas Light","suite":"Apt. 556","city....]


Des idées ?

Merci

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
8 nov. 2019 à 14:32
Bonjour,

Il faut regarder la documentation quand tu as des problèmes.

JsonObject gère les valeurs entourées par des accolades.
https://jakarta.ee/specifications/platform/8/apidocs/javax/json/jsonobject

Pour les valeurs json entourées par des crochets il faut utiliser JsonArray
https://jakarta.ee/specifications/platform/8/apidocs/javax/json/jsonarray
0
Kilkenny95 Messages postés 157 Date d'inscription lundi 24 septembre 2018 Statut Membre Dernière intervention 31 août 2020
8 nov. 2019 à 14:41
Bonjour,

Merci de ta réponse, mais e, insérant le code montré j'obtiens :


		String reponseBrut = new String(responseContent.toString());
		
		JSONParser jsonParser = new JSONParser();
		JSONObject jsonObject = (JSONObject) jsonParser.parse(reponseBrut);
		String value = (String) jsonObject.get("name");
		
		System.out.println(value);



Erreur :

Exception in thread "main" java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.JSONObject

C''est précisément l'erreur qu'il ressort encore
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > Kilkenny95 Messages postés 157 Date d'inscription lundi 24 septembre 2018 Statut Membre Dernière intervention 31 août 2020
8 nov. 2019 à 17:47
Tu as changé de bibliothèque entre les deux codes ?
Dans ton premier message tu mettais JsonObject et JsonParser (javax.json.*) et maintenant tu mets JSONObject et JSONParser (org.json.*)

Quant au message, c'est assez classique : tu ne peux faire
X x = (X) y;
que si
y
hérite de
X
.
Dans ton cas y est un JSONArray, x est un JSONObject, mais il n'y a pas de relation d'héritage entre les deux.
Object obj = jsonParser.parse(reponseBrut);
if (obj instanceof JSONObject) {
    JSONObject jsonObject = (JSONObject) obj;
    ...
} else if (obj instanceof JSONArray) {
    JSONArray jsonArray = (JSONArray) obj;
    ...
}
0