Android 查找JSONObject而不是查找对象
我正在尝试解析以下JSON代码,但无法理解。我正在使用下面的代码。但它找不到目标。getJsonObject查找名称,那么如何查找对象4106呢 我的代码:Android 查找JSONObject而不是查找对象,android,json,Android,Json,我正在尝试解析以下JSON代码,但无法理解。我正在使用下面的代码。但它找不到目标。getJsonObject查找名称,那么如何查找对象4106呢 我的代码: JSONObject structure = Utilities.getJSONFromUrl(url); JSONObject jobj = structure.getJSONObject("4106"); Log.w("JSON", jobj.toString()) 我的JSON: { "id": 356, "hass
JSONObject structure = Utilities.getJSONFromUrl(url);
JSONObject jobj = structure.getJSONObject("4106");
Log.w("JSON", jobj.toString())
我的JSON:
{
"id": 356,
"hassubcategories": true,
"subcategories": [
{
"id": 3808,
"CategoryName": "Current Products",
"CategoryImage": null,
"hassubcategories": true,
"subcategories": [
{
"id": 4106,
"CategoryName": "Architectural",
"CategoryImage": "2637",
"hassubcategories": true,
"subcategories": [
{
"id": 391,
"CategoryName": "Flooring",
"CategoryImage": "2745",
"hassubcategories": false
}
]
}
]
}
]
}
您必须对json进行迭代,才能从正在获取的json数据中获得所需的内容: 1.
JSONArray(“子类别”)
2.获取子数组JSONArray(“子类别”)
最后一个get object
array.getJSONObject(“4106”)
使用类似的方法
JSONObject sub = (JSONObject)structure.getJSONArray("subcategories").get(0);
JSONObject jobj = (JSONObject) sub.getJSONArray("subcategories").get(0);
将当前json解析为4106值:
JSONObject structure = Utilities.getJSONFromUrl(url);
JSONArray arrsubcategories= structure.getJSONArray("subcategories");
for(int i = 0; i < arrsubcategories.length(); i++){
JSONObject jobj = arrsubcategories.getJSONObject(i);
JSONArray arrsubcategoriesnew= jobj.getJSONArray("subcategories");
for(int j = 0; j < arrsubcategoriesnew.length(); j++){
JSONObject jobjnew = arrsubcategoriesnew.getJSONObject(j);
// get id here
String str_id=jobjnew.getString("id");
String str_CategoryName=jobjnew.getString("CategoryName");
....
Log.w("JSON", str_id)
JSONArray arrsub_snew= jobjnew.getJSONArray("subcategories");
}
}
JSONObject structure=Utilities.getJSONFromUrl(url);
JSONArray arrsubcategories=structure.getJSONArray(“子类别”);
对于(int i=0;i
Hint-下面是使用JavaScript的方法:structure.subcategories[0]。subcategories[0]
谢谢!下一步我需要读取所有的值,但首先我必须找到一个值是否存在,您的代码可以很好地执行该值。如果列表要大得多,我希望将每个值映射到包含所有相关JSON字段变量的类。我会使用类似于JSONReader的东西吗?@ios85:不需要使用用户JSONReader,因为它可以从最新的api中获得。你们能用你们试过的代码编辑问题吗?我还并没有开始编写那个部分的代码,只是在想我应该怎么做。本质上,JSON将返回一个更大的结构,我不想发布整个内容,因为它非常大(具有任意级别)。但首先我需要验证一个特定的类别是否存在,然后我需要遍历整个JSON,然后将每个对象映射到一个类的新实例。@ios85:我认为您当前的json api返回动态json字符串,因为如果HassSubCategories为true,则意味着下一个子类可用,如果不是,则停止解析如果我在同一级别上有两个对象,会不会中断?我想我需要一个递归搜索,这就是我考虑使用JSONReader的原因
JSONObject structure = Utilities.getJSONFromUrl(url);
JsonObject subcat=struct.getJSONArray("subcategories").getJSONOBJECT(0);
JSONObject innersubcats = subcat.getJSONArray("subcategories").getJSONOBJECT(0);
String id = innersubcats.getstring("id");
log.i("ID OF Inner Subcategories",id);