首先,我想检索嵌套在评级名称中的所有费率值,并假设我不知道在那里有多少评级,所以应该有某种类型的循环检查它们。 json对象如下所示。ANDROID JSON从嵌套键检索多个值
{
"restaurant": [
{
"restaurantId": "1",
"restaurantName": "Restaurant A",
"area": "Skudai",
"state": "Johor",
"rating": [
{
"ratingId": "1",
"rate": "5",
"comment": null,
"userId": "15"
},
{
"ratingId": "2",
"rate": "4",
"comment": null,
"userId": "14"
}
]
},
{
"restaurantId": "2",
"restaurantName": "Restaurant 2",
"area": "Skudai",
"state": "Johor",
"rating": null
}
],
"success": 1
}
下面是在while循环的retrieveng部分看起来不太正确的代码。对于getAverage中的JSONObject参数,我已经拿到了第一家只有餐厅A的餐厅,餐厅2不包括在内。
public int getAverage(JSONObject jsonObject){
int average = 0, count = 0;
while (jsonObject.has("rate")){
average += Integer.parseInt(jsonObject.optString("rate"));
count++;
}
average /= count;
return average;
}
如何使用optString()来计算平均从嵌套等级的检索频率的倍数值,或者我应该用其他的方式来找回?
你的代码在哪里?你尝试过什么? –
复制json响应,粘贴到http://json2csharp.com,它给你类作为C#,将类转换为Java,使用GSON解析JSON。如果你不能,请检查这个http://stackoverflow.com/questions/36625488/how-to-deserialize-json-with-a-string-url-name-value-pair/36625899#36625899 –