簡體   English   中英

無法解析JSON數據

[英]Not able to parse the JSON data

我正在做一個android項目。 我需要從服務器檢索的JSON數據解析中的幫助:

{"item_name":["Navnita","Navnita","Navnita"],"username":["James","John","Jenny"],"review":["Its a relly nice restaurant for Vegetarians! :)","Cool!","Food is just great!"]}

我只想用"username"和他的"review"填充RecyclerView。 現在,我正在使用以下代碼來解析JSON數據並填充arrayList,該數組又填充了RecyclerView,但它給了我錯誤(下面的logcat):

String result ....;
           JSONObject jObject = new JSONObject(result);
            JSONArray usernameJsonArray =  jObject.getJSONArray("username");
            JSONArray reviewJsonArray = jObject.getJSONArray("review");
            for(int i=0;i<usernameJsonArray.length();i++){
                String username = usernameJsonArray.getJSONObject(i).toString();
                String review = reviewJsonArray.getJSONObject(i).toString();
                getReviewFeedItemsArrayList.add(new GetReviewFeedItems(username,review));
            }

我認為上面的代碼存在問題,但我無法弄清楚。 這是logcat:

09-19 14:33:24.295  30572-30646/app.usrete.jayant.delvemitt W/System.err﹕ org.json.JSONException: Value James at 0 of type java.lang.String cannot be converted to JSONObject
09-19 14:33:24.305  30572-30646/app.usrete.jayant.delvemitt W/System.err﹕ at org.json.JSON.typeMismatch(JSON.java:100)
09-19 14:33:24.305  30572-30646/app.usrete.jayant.delvemitt W/System.err﹕ at org.json.JSONArray.getJSONObject(JSONArray.java:484)

直接在您的for循環中編寫

String username=usernameJsonArray.getString(i);

您的內部數據不是JsonObject它只是字符串

您使用以下代碼來檢索數據

            JSONObject jObject = new JSONObject(result);
            JSONArray usernameJsonArray =  jObject.getJSONArray("username");
            JSONArray reviewJsonArray = jObject.getJSONArray("review");
            for(int i=0;i<usernameJsonArray.length();i++)
             {
                String username = usernameJsonArray.getString(i);
                String review = reviewJsonArray.getString(i);
                getReviewFeedItemsArrayList.add(new GetReviewFeedItems(username,review));
            }

我認為您會收到來自http響應的JSON格式輸出的額外HTML垃圾。

在將http響應轉換為字符串后,只需添加即可。 此代碼將修剪掉多余的html垃圾並吐出json格式。

jsonData = jsonData.substring(jsonData.indexOf("{\""), jsonData.lastIndexOf("\"}") + 2);

這里的“ jsonData”是您的http響應中的字符串格式。 之后,請執行JSON分析的通常步驟。

我會用GSON。 首先將您的JSON轉換為POJO類http://www.jsonschema2pojo.org/ 然后使用GSON解析您的JSON數據:

Gson gson = new Gson();
PojoClass obj = gson.fromJson(jsonString, PojoClas.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM