Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 查找JSONObject而不是查找对象_Android_Json - Fatal编程技术网

Android 查找JSONObject而不是查找对象

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

我正在尝试解析以下JSON代码,但无法理解。我正在使用下面的代码。但它找不到目标。getJsonObject查找名称,那么如何查找对象4106呢

我的代码:

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);