[英]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.