我正在开发一个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)
答案 0 :(得分:3)
直接在你的for循环中写这个
String username=usernameJsonArray.getString(i);
您的内部数据不是JsonObject
只是字符串
答案 1 :(得分:1)
使用以下代码来检索数据
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));
}
答案 2 :(得分:0)
我认为你正在从http响应中获得带有回显JSON格式输出的额外html垃圾。
将http响应转换为字符串后,只需添加此项即可。这段代码将修剪掉额外的html junks并吐出json格式。
jsonData = jsonData.substring(jsonData.indexOf("{\""), jsonData.lastIndexOf("\"}") + 2);
这里“jsonData”是来自http响应的String格式。 在此之后,按照JSON解析的常规步骤进行操作。
答案 3 :(得分:0)
我会使用GSON。首先将您的JSON转换为POJO类http://www.jsonschema2pojo.org/。然后使用GSON解析您的JSON数据:
Gson gson = new Gson();
PojoClass obj = gson.fromJson(jsonString, PojoClas.class);