【问题标题】:How to get the list of all tag names of json arrays within a json object in android/java如何在android / java中的json对象中获取json数组的所有标签名称列表
【发布时间】:2012-09-12 14:16:45
【问题描述】:

我在解析 json 响应时遇到了一个小问题,因为每当我发送请求时它都会不断更新。我看到的所有示例都让我们提供了标签名称。我的问题是我正在尝试从通过 API 发送的请求中解析数据,并且我想在开始解析之前列出 JSON 对象中存在的所有 JSON 数组的所有标签。在android中可以吗? http://api.yamgo.tv/channel?apiKey=187abeefc53f900600dc0fc5b8f913a0&token=892e069fa48eead5e7f84cddafe7f0ba 这是我发送的请求,它给了我一个 json 响应。它具有作为 json 对象的通道,其中包含许多带有诸如宝莱坞、娱乐、音乐等标签的 json 数组。使用在线解析器来检查响应。我想要这个数组名称列表。我该怎么做。谁能帮忙。谢谢。

【问题讨论】:

  • 上面的链接有一些错误,因为这给了我空指针异常。
  • 在 Dom 解析中,在解析任何标记之前,这给了我空指针异常的错误。
  • 好的,我想可能需要更改 apikey 和令牌,这就是为什么你会收到错误,我想使用 Iterator 来完成它。很快就会发布解决方案。

标签: java android json parsing


【解决方案1】:

实际上,我是在一位朋友的帮助下才弄明白的。需要使用 Iterator 对象。 这是代码的sn-p

JSONObject channels = jobj.getJSONObject(TAG_CHANNELS);
    Iterator<?> keys=channels.keys();
    while( keys.hasNext() )
    {
        String key = (String)keys.next();
        Log.e("Key", key);
        if( channels.get(key) instanceof JSONArray ){
            jsontags.add(key);
        }
    }

【讨论】:

    【解决方案2】:

    其中 jsonObj 是包含一些数据的 JSONObject, 通过以下代码,您只能获取字段名称,如果您想要列值,则可以进一步添加键值。

    List<String> listArray = new ArrayList<String>();
        Iterator iter = jsonObj.keys();
        int count=0;
        while(iter.hasNext()){
            listArray.add((String)iter.next());
            count +=1;
        }
        System.out.println(listArray);
    
    output: [projector, video_conference, polycom, lcd, digital_phone, speaker_phone]
    

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 2015-09-10
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多