Impossible de définir le tableau dans JSONObject en fonction de la réponse.Voici mon code dans lequel je ne peux pas définir le tableau dans jsonobject. Comment envoyer la valeur de la clé pour le tableau dans mon jsonobject pour lequel a partagé la réponse que le code obtient du postman
Est-ce la bonne manière dans le code
Code--
{"apiKey":"WSEoaGBifOEIS5dd6vQ5tfbs3R1c8Rsz","affId":"teamfotog","act":"photoStores","latitude":"40.7127753","longitude":"-74.0059728","devinf":"Android,7.0","appver":"1.00","productDetails":[{"productId":"6670002","qty":"3"}]}
C'est le code de MainActivity. Le problème n'est pas d'obtenir le bon jsonarray dans mon objet JSON, donc l'API ne frappera pas correctement Ces valeurs de clé de chaîne sont utilisées pour transmettre les paramètres de demande
String key="WSEoaGBifOEIS5dd6vQ5tfbs3R1c8Rsz"; String affId="teamfotog"; String act="photoStores"; String latitude="40.7127753"; String longitude="-74.0059728"; String devinf="Android,7.0"; String appver="1.00"; String productId="6670002"; String qty="3"; //productDetails **JsonArray array = new JsonArray(); array.add(productId); array.add(qty);** JSONObject jsonObject = new JSONObject(); try { jsonObject.put("apiKey", key); jsonObject.put("affId", affId); jsonObject.put("act", act); jsonObject.put("latitude", latitude); jsonObject.put("longitude", longitude); jsonObject.put("devinf", devinf); jsonObject.put("appver", appver); **jsonObject.put("productDetails", array);** JsonParser jsonParser = new JsonParser(); ApiStorePhotoInterface apiInterface = ApiStorePhotoClient.getApi(); Call<PhotoStoreMainModel> call = apiInterface.getResponse((JsonObject) jsonParser.parse(jsonObject.toString().trim()));
Request Params est dans Jsonbody -
JsonArray array = new JsonArray(); array.add(productId); array.add(qty); JSONObject jsonObject = new JSONObject(); jsonObject.put("productDetails", array);**
4 Réponses :
Vous devez mettre le modèle de détail du produit dans le tableau
String key="WSEoaGBifOEIS5dd6vQ5tfbs3R1c8Rsz"; String affId="teamfotog"; String act="photoStores"; String latitude="40.7127753"; String longitude="-74.0059728"; String devinf="Android,7.0"; String appver="1.00"; String productId="6670002"; String qty="3"; JsonObject product = new JsonObject(); product.put("productId",productId); product.put("qty",qty); JsonArray array = new JsonArray(); array.add(product); JSONObject jsonObject = new JSONObject(); jsonObject.put("apiKey", key); jsonObject.put("affId", affId); jsonObject.put("act", act); jsonObject.put("latitude", latitude); jsonObject.put("longitude", longitude); jsonObject.put("devinf", devinf); jsonObject.put("appver", appver); jsonObject.put("productDetails", array);
Bien sûr, cela ne fonctionnera pas. Vous ajoutez directement des objets ( Strings
) dans votre JsonArray
. Dans le corps de la réponse, vous voulez vraiment un JsonObject
à l'intérieur du JsonArray
. Essaye ça -
JsonObject productDetail = new JsonObject(); productDetail.addProperty("productId", productId); productDetail.addProperty("qty", qty); JsonArray array = new JsonArray(); array.add(productDetail);
Je dois donc créer un nouveau jsonobject pour cela?
JSONArray ne fonctionne pas mais JsonArray fonctionne avec une réponse nulle
À partir du corps de la réponse, vous pouvez voir qu'il s'agit d'un tableau d'objets.
{"apiKey": "WSEoaGBifOEIS5dd6vQ5tfbs3R1c8Rsz", "affId": "teamfotog", "act": "photoStores", "latitude": "40.7127753", "longitude": "-74.0059728", "devinf": "Android, 7.0 "," appver ":" 1.00 "," productDetails ":" [\ "{\\\" productId \\\ ": \\\" 6670002 \\\ ", \\\" qty \\\ ": \ \\ "3 \\\" } \ "]"} obtenir ceci à partir du débogage
attendu - {"apiKey": "WSEoaGBifOEIS5dd6vQ5tfbs3R1c8Rsz", "affId": "teamfotog", "act": "photoStores", "latitude": "40.7127753", "longitude": "-74.0059728", "devinf": " Android, 7.0 "," appver ":" 1.00 "," productDetails ": [{" productId ":" 6670002 "," qty ":" 3 "}]}
Ok, donc la structure est correcte, mais en raison de l'incompatibilité de la bibliothèque, vous obtenez des barres obliques inverses. Quelle est votre déclaration d'importation pour JsonArray?
Je pense que le problème est que vous JSONObject
différentes classes, JSONObject
, JsonObject
, JSONArray
et JsonArray
. org.json
classes com.google.gson
ou org.json
. Ne mélangez pas. Alors maintenant, essayez de remplacer JSONObject jsonObject = new JSONObject();
avec JsonObject jsonObject = new JsonObject();
jsonObject.put ("apiKey", clé); ma méthode put ne fonctionne pas maintenant
Utilisez jsonObject.addProperty("apiKey", key);
pour les Strings
et jsonObject.add("apiKey", key);
pour tableau.
Mauvais type d'argument 2nd. Trouvé: 'java.lang.String', requis: 'com.google.gson.JsonElement' moins ... Info d'inspection: add (String, com.google.gson.JsonElement) dans JsonObject ne peut pas être appliqué à (String, java .lang.String) pour ceci ---- jsonObject.add ("apiKey", clé); pour clé
Continuons cette discussion en chat .
Essaye ça .
jsonObject.put("productDetails",(Object)array);
obtenir cette demande du débogueur ---
{"apiKey": "WSEoaGBifOEIS5dd6vQ5tfbs3R1c8Rsz", "affId": "teamfotog", "act": "photoStores", "latitude": "40.7127753", "longitude": "-74.0059728", "devinf": "Android, 7.0 "," appver ":" 1.00 "," productDetails ":" [\ "{\\\" productId \\\ ": \\\" 6670002 \\\ ", \\\" qty \\\ ": \ \\ "3 \\\" } \ "]"}
Attendu - {"apiKey": "WSEoaGBifOEIS5dd6vQ5tfbs3R1c8Rsz", "affId": "teamfotog", "act": "photoStores", "latitude": "40.7127753", "longitude": "-74.0059728", "devinf": "-74.0059728", "devinf": Android, 7.0 "," appver ":" 1.00 "," productDetails ": [{" productId ":" 6670002 "," qty ":" 3 "}]}
Si quelqu'un a toujours des problèmes avec cela, c'est ce qui l'a résolu pour moi:
Utilisation:
JsonArray
istead de
JSONArray