La conversion de JSONObject pour Objet Java
J'ai fait un appel reste à un service et stockée la réponse à une JSONObject
. Cependant, je suis en train de le convertir en un objet de classe et d'avoir des erreurs. Voici mon code:
RestOperations operations = /*initalize*/;
String body = /*build request body*/;
String resourceResponse = operations.postForObject(/* url */, body, String.class);
JSONObject jsonResponse = new JSONObject(resourceResponse);
UserIdentifier userIdentifier = (UserIdentifier) jsonResponse.get("userIdentifier");
Voici ce que la réponse ressemble:
{
"userIdentifier": {
"uid": "ee63a52cda7bf411dd8603ac196951aa77",
"code": "63a5297e7bf411dd8603ac196951aa77",
"retailId": "860658787",
"pointOfEntry": "RETAIL"
},
"resultCode": true
}
Et voici ce que le UserIdentifier
classe ressemble à:
public class UserIdentifier {
private String uid;
private String code;
private String retailId;
public UserIdentifier() {
}
public UserIdentifier(String uid, String code, String retailId) {
this.uid = uid;
this.code = code;
this.retailId = retailId;
}
public String getuid() {
return uid;
}
public void setuid(String uid) {
this.uid = uid;
}
public String getcode() {
return code;
}
public void setcode(String code) {
this.code = code;
}
public String getretailId() {
return retailId;
}
public void setretailId(String retailId) {
this.retailId = retailId;
}
}
Mais j'obtiens l'erreur:
java.lang.ClassCastException: org.json.JSONObject cannot be cast to app.identity.UserIdentifier
Ce que je fais mal?
Edit 1: Voici la tentative à l'aide de gson à partir des réponses:
Gson gson = new GsonBuilder().create();
String body = /*build request body*/;
String resourceResponse = operations.postForObject(/* url */, body, String.class);
JSONObject jsonResponse = new JSONObject(resourceResponse);
UserIdentifier userIdentifier = gson.fromJson(jsonResponse.getString("userIdentifier"), UserIdentifier.class);
Mais j'obtiens l'erreur:
org.json.JSONException: JSONObject["userIdentifier"] not a string.
at org.json.JSONObject.getString(JSONObject.java:658) ~[json-20140107.jar:na]
Utilisation UserIdentifier convention au lieu de userIdentifier pour correspondre avec le nom de classe. J'espère que cela va fonctionner
OriginalL'auteur Richard | 2016-02-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez avoir besoin d'utiliser gson
OriginalL'auteur Mahesh Giri
Compris quel était le problème. Nécessaires à l'extraction du jsonobject au lieu de se faire la chaîne. Ici, c'est la ligne qui a résolu le problème:
OriginalL'auteur Richard
les choses, c'est que vous ne pouvez pas jeter l'objet que de retour dans la méthode get, comme cela, Une solution pourrait être de cette façon, en utilisant
GSON
bibliothèque:OriginalL'auteur fernandojne
Utilisation Gson bibliothèque
Dans votre cas jsonString est resourceResponse
Pour plus de détails étude Gson documentation
org.json.JSONException: JSONObject["userIdentifier"] not a string. at org.json.JSONObject.getString(JSONObject.java:658)
Êtes-vous à l'aide de Gson maintenant?
J'ai édité mon post
OriginalL'auteur Noor Nawaz