まず、レーティング名にネストされたすべてのレート値を取得したいと思います。そこにいくつのレーティングがあるか分からないため、何らかのループそれらをチェックしてください。 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ループの検索部分で正しくないと思われるコードです。 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が解析されます。あなたができないなら、plsはこれをチェックするhttp://stackoverflow.com/questions/36625488/how-to-deserialize-json-with-a-string-url-name-value-pair/36625899#36625899 –