假设我从网络服务获得此JSon响应:
{
"id":13,
"name":"Alireza",
"required_id":"14",
"all_friends_id_and_name":{
"28":"Hassan",
"21":"Mohammad",
"68":"Ali",
"14":"Taha",
"96":"Darya"
}
}
在此响应中,required_id
值指定我需要一个ID为14的朋友名称,因此在all_friends_id_and_name
对象中,我应获取值“ 14”(塔哈),并在我的应用中使用它。
我正在使用Retrofit2和gson库。
如何获取具有非固定键的对象的属性?
答案 0 :(得分:1)
RETROFIT
在此情况下无济于事。对于本机方法,可以尝试使用Iterator
。
迭代器是使程序员能够遍历一个对象的对象。 容器,尤其是列表。
"all_friends_id_and_name":{
"28":"Hassan",
"21":"Mohammad",
"68":"Ali",
"14":"Taha",
"96":"Darya"
}
对于以上部分,您的 LOGIC
将是
JSONObject jsonData = new JSONObject("Json_response");
Iterator iteratorObj = jsonData .keys();
while (iteratorObj.hasNext())
{
String str_json_Key = (String)iteratorObj.next();
// Print=28,21....96
}
答案 1 :(得分:0)
这是你的杰森:
{
"id":13,
"name":"Alireza",
"required_id":"14",
"all_friends_id_and_name":{
"28":"Hassan",
"21":"Mohammad",
"68":"Ali",
"14":"Taha",
"96":"Darya"
}
}
尝试这样做:
try {
JSONObject jsonObject; // it should be your above JsonObject
Iterator<?> keys = jsonObject.keys();
while (keys.hasNext()) {
String key = (String) keys.next();
System.out.println("Mykey: " + key + " value: " + jsonObject.getString(key));
}
} catch (JSONException e) {
e.printStackTrace();
}