Java 如何在JSON对象中获取JSON数组?
这是我的JSON:Java 如何在JSON对象中获取JSON数组?,java,android,json,Java,Android,Json,这是我的JSON: { "data": [ { "id": 1, "Name": "Choc Cake", "Image": "1.jpg", "Category": "Meal", "Method": "", "Ingredients": [ { "name
{
"data": [
{
"id": 1,
"Name": "Choc Cake",
"Image": "1.jpg",
"Category": "Meal",
"Method": "",
"Ingredients": [
{
"name": "1 Cup Ice"
},
{
"name": "1 Bag Beans"
}
]
},
{
"id": 2,
"Name": "Ice Cake",
"Image": "dfdsfdsfsdfdfdsf.jpg",
"Category": "Meal",
"Method": "",
"Ingredients": [
{
"name": "1 Cup Ice"
}
]
}
]
}
这就是我获取id和名称的方式,您可以看到这一部分在返回非数组值的JSON值时运行良好
//getting whole json string
JSONObject jsonObj = new JSONObject(jsonStr);
//extracting data array from json string
JSONArray ja_data = jsonObj.getJSONArray("data");
int length = jsonObj .length();
//loop to get all json objects from data json array
for(int i=0; i<length; i++)
{
JSONObject jObj = ja_data.getJSONObject(i);
Toast.makeText(this, jObj.getString("Name"), Toast.LENGTH_LONG).show();
// getting inner array Ingredients
JSONArray ja = jObj.getJSONArray("Ingredients");
int len = ja.length();
}
//获取整个json字符串
JSONObject jsonObj=新的JSONObject(jsonStr);
//从json字符串中提取数据数组
JSONArray ja_data=jsonObj.getJSONArray(“数据”);
int length=jsonObj.length();
//循环以从数据json数组获取所有json对象
对于(int i=0;iSolved),使用字符串数组列表从成分中获取名称。使用以下代码:
JSONObject jsonObj = new JSONObject(jsonStr);
//extracting data array from json string
JSONArray ja_data = jsonObj.getJSONArray("data");
int length = ja_data.length();
//loop to get all json objects from data json array
for(int i=0; i<length; i++){
JSONObject jObj = ja_data.getJSONObject(i);
Toast.makeText(this, jObj.getString("Name"), Toast.LENGTH_LONG).show();
// getting inner array Ingredients
JSONArray ja = jObj.getJSONArray("Ingredients");
int len = ja.length();
ArrayList<String> Ingredients_names = new ArrayList<>();
for(int j=0; j<len; j++){
JSONObject json = ja.getJSONObject(j);
Ingredients_names.add(json.getString("name"));
}
}
JSONObject jsonObj=新的JSONObject(jsonStr);
//从json字符串中提取数据数组
JSONArray ja_data=jsonObj.getJSONArray(“数据”);
int length=ja_data.length();
//循环以从数据json数组获取所有json对象
对于(int i=0;iJSONObject JSONObject=newjsonobject(jsonStr);
JSONArray JSONArray=jsonObject.getJSONArray(“数据”);
对于(inti=0;i我想这会对你有所帮助
JSONObject jsonObj=新的JSONObject(jsonStr);
JSONArray ja_data=jsonObj.getJSONArray(“数据”);
int length=jsonObj.length();
for(int i=0;iJSONObject JSONObject=newjsonobject(jsonString);
JSONArray jArray=jsonObj.getJSONArray(“数据”);
int length=jArray.length();
对于(int i=0;i您的int length=jsonObj.length();
应该是int length=ja_data.length();
请解释“不起作用”。这应该是一条评论欢迎访问SO!请编辑您的答案并解释您正在做什么,请参阅以获取更多指导。我在jsonobject中找不到getJSONArray方法。请您澄清,我将如何获得此方法。
JSONObject jsonObj = new JSONObject(jsonStr);
//extracting data array from json string
JSONArray ja_data = jsonObj.getJSONArray("data");
int length = ja_data.length();
//loop to get all json objects from data json array
for(int i=0; i<length; i++){
JSONObject jObj = ja_data.getJSONObject(i);
Toast.makeText(this, jObj.getString("Name"), Toast.LENGTH_LONG).show();
// getting inner array Ingredients
JSONArray ja = jObj.getJSONArray("Ingredients");
int len = ja.length();
ArrayList<String> Ingredients_names = new ArrayList<>();
for(int j=0; j<len; j++){
JSONObject json = ja.getJSONObject(j);
Ingredients_names.add(json.getString("name"));
}
}
JSONObject jsonObject =new JSONObject(jsonStr);
JSONArray jsonArray = jsonObject.getJSONArray("data");
for(int i=0;i<jsonArray.length;i++){
JSONObject json = jsonArray.getJSONObject(i);
String id = json.getString("id");
String name=json.getString("name");
JSONArray ingArray = json.getJSONArray("Ingredients") // here you are going to get ingredients
for(int j=0;j<ingArray.length;j++){
JSONObject ingredObject= ingArray.getJSONObject(j);
String ingName = ingredObject.getString("name");//so you are going to get ingredient name
Log.e("name",ingName); // you will get
}
}
JSONObject jsonObj = new JSONObject(jsonString);
JSONArray jArray = jsonObj.getJSONArray("data");
int length = jArray.length();
for(int i=0; i<length; i++)
{
JSONObject jObj = jArray.getJSONObject(i);
String id = jObj.optString("id");
String name=jObj.optString("name");
JSONArray ingredientArray = jObj.getJSONArray("Ingredients");
int size = ingredientArray.length();
ArrayList<String> Ingredients = new ArrayList<>();
for(int j=0; j<size; j++)
{
JSONObject json = ja.getJSONObject(j);
Ingredients.add(json.optString("name"));
}
}
Gson gson = new Gson();
Type listType = new TypeToken<List<Data>>() {}.getType();
List<Data> cartProductList = gson.fromJson(response.body().get("data"), listType);
Toast.makeText(getContext(), ""+cartProductList.get(0).getCity(), Toast.LENGTH_SHORT).show();