1
votes

Comment définir un tableau dans jsonobject

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);**


0 commentaires

4 Réponses :


0
votes

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);


0 commentaires

1
votes

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);


11 commentaires

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 .



1
votes

Essaye ça .

jsonObject.put("productDetails",(Object)array);


3 commentaires

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 "}]}



0
votes

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


0 commentaires