如何在jsonobject中设置数组

时间:2019-05-07 07:43:38

标签: java android json gson

无法根据响应在JSONObject中设置数组。以下是我无法在jsonobject中设置数组的代码。如何在我的jsonobject内发送数组的键值,该对象共享从邮递员那里得到的响应

这是正确的代码

代码-

     JsonArray array = new JsonArray();
            array.add(productId);
            array.add(qty);
     JSONObject jsonObject = new JSONObject();
                jsonObject.put("productDetails", array);**

这是MainActivity中的代码。问题是我的JSON对象中没有获得正确的jsonarray,因此API无法正确命中 这些字符串键值用于传递请求参数

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

请求参数在Jsonbody中-

{"apiKey":"WSEoaGBifOEIS5dd6vQ5tfbs3R1c8Rsz","affId":"teamfotog","act":"photoStores","latitude":"40.7127753","longitude":"-74.0059728","devinf":"Android,7.0","appver":"1.00","productDetails":[{"productId":"6670002","qty":"3"}]}

4 个答案:

答案 0 :(得分:1)

当然,它不起作用。您正在直接在vim ~/.vimrc set csprg=/path/to/your/desired/cscope 中添加对象(Strings)。在响应正文中,您真正想要的是JsonArray内的JsonObject。试试这个-

JsonArray

答案 1 :(得分:1)

尝试一下。

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

答案 2 :(得分:0)

您应该将产品详情模型放入数组

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

答案 3 :(得分:0)

如果有人仍然对此有疑问,这就是为我解决的问题:

使用:

JSONArray

代替

JsonArray