Android 工作室:如何在另一个 JSON 对象中循环遍历 JSON 个对象
Android studio : How to loop through JSON objects within another JSON object
所以我有一个带有三个字符串参数(名称、成分、图像)的 Pizza 对象。
我有一个 JSON 格式的字符串:
{"Meat pizza":{"Ingredients":"cheese,meat","image":"meat"},"Cheese pizza":{"Ingredients":"cheese","image":"cheese"}}
我假设是 JSON 个对象中的 JSON 个对象。
我正在使用 Volley 库,到目前为止我想到了这个:
private RequestQueue queue = Volley.newRequestQueue(this);
private String url ="http://daviddurand.info/D228/pizza/";
public ArrayList<Pizza> listPizza(){
final ArrayList<Pizza> list=new ArrayList<>();
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
JSONObject obj = null;
try {
obj = new JSONObject(response);
Iterator<String> iter = obj.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
Pizza pizza=new Pizza();
Object value = obj.get(key);
//fill the Pizza object with data
pizza.setName();
pizza.setIngredients();
pizza.setImage();
//insert it into the list
list.add(pizza);
} catch (JSONException e) {
// Something went wrong!
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//error
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
return list;
}
你可能已经猜到了,到目前为止它什么也没做,因为我不知道如何获取数据来填充 Pizza 对象..
注意:值得一提的是,我无法修改数据的创建方式,因为我被迫从 here
使用它
您可以按照此操作 Tutorial 而且我建议您使用对象数组而不是对象对象。喜欢这个表格:
[
{
"name" : "Ravi Tamada",
"email" : "ravi8x@gmail.com",
"phone" : {
"home" : "08947 000000",
"mobile" : "9999999999"
}
},
{
"name" : "Tommy",
"email" : "tommy@gmail.com",
"phone" : {
"home" : "08946 000000",
"mobile" : "0000000000"
}
}
]
简单多了。我希望这会有用。
我没有测试过这个,你可以从 JSONObject 中获取 JSONObject
Object value = obj.get(key);
//fill the Pizza object with data
pizza.setName(key);
JSONObject jsonobject2 = obj.getJSONObject(key);
pizza.setIngredients(jsonobject2.getString("ingredients"));
pizza.setImage(jsonobject2.getString("image"));
所以我有一个带有三个字符串参数(名称、成分、图像)的 Pizza 对象。 我有一个 JSON 格式的字符串:
{"Meat pizza":{"Ingredients":"cheese,meat","image":"meat"},"Cheese pizza":{"Ingredients":"cheese","image":"cheese"}}
我假设是 JSON 个对象中的 JSON 个对象。 我正在使用 Volley 库,到目前为止我想到了这个:
private RequestQueue queue = Volley.newRequestQueue(this);
private String url ="http://daviddurand.info/D228/pizza/";
public ArrayList<Pizza> listPizza(){
final ArrayList<Pizza> list=new ArrayList<>();
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
JSONObject obj = null;
try {
obj = new JSONObject(response);
Iterator<String> iter = obj.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
Pizza pizza=new Pizza();
Object value = obj.get(key);
//fill the Pizza object with data
pizza.setName();
pizza.setIngredients();
pizza.setImage();
//insert it into the list
list.add(pizza);
} catch (JSONException e) {
// Something went wrong!
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//error
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
return list;
}
你可能已经猜到了,到目前为止它什么也没做,因为我不知道如何获取数据来填充 Pizza 对象..
注意:值得一提的是,我无法修改数据的创建方式,因为我被迫从 here
使用它您可以按照此操作 Tutorial 而且我建议您使用对象数组而不是对象对象。喜欢这个表格:
[
{
"name" : "Ravi Tamada",
"email" : "ravi8x@gmail.com",
"phone" : {
"home" : "08947 000000",
"mobile" : "9999999999"
}
},
{
"name" : "Tommy",
"email" : "tommy@gmail.com",
"phone" : {
"home" : "08946 000000",
"mobile" : "0000000000"
}
}
]
简单多了。我希望这会有用。
我没有测试过这个,你可以从 JSONObject 中获取 JSONObject
Object value = obj.get(key);
//fill the Pizza object with data
pizza.setName(key);
JSONObject jsonobject2 = obj.getJSONObject(key);
pizza.setIngredients(jsonobject2.getString("ingredients"));
pizza.setImage(jsonobject2.getString("image"));