【问题标题】:How to read JSON parent tags in Android如何在 Android 中读取 JSON 父标签
【发布时间】:2012-06-06 05:07:06
【问题描述】:

我需要您的帮助来解决以下问题。我想读取 JSON 文件的父标签。以下是我的 JSON 文件内容;

{
    "ebook":
        [
            {"id":"1","name":"book1"},
            {"id":"2","name":"book2"}
        ],
    "ebrochure":
        [
            {"id":"1","name":"brochure1"},
            {"id":"2","name":"brochure2"}       
        ],
    "emenu":
        [
            {"id":"1","name":"menu1"},
            {"id":"2","name":"menu2"}           
        ]
}

我只需要找出 JSON 中有多少个父标签以及它们是什么。根据我给定的 JSON 文件,答案应该是 3(有 3 个父 JSON 标签)和“ebooks, ebrochure em>, emenu"(父标签的名称)。有什么 JAVA 课程可以让我完成工作吗?

我知道如何阅读完整的 JSON 文件。首先,我们将 JSON 传递给 JSONObject,然后使用 getJSONArray() 方法将孩子传递给 JSONArray

getJSONArray() 方法需要父标签的名称。根据我的示例,它可以是 ebookebrochureemenu。假设有一种情况,我们无法看到 JSON 的内容,只能访问 URL。在这种情况下,我需要找出有多少父母标签以及它们的名称。

这是我的问题。提前感谢您帮助我:-)

【问题讨论】:

  • 那么,JSONObject 上有哪些方法可能有用? (那里的顶级 JSONObject 有 3 个键/值对。如何以编程方式找到它?)
  • 这个没有意义:有一种情况是看不到json的内容,只能访问url如果可以访问url,可以获取内容。当您获取内容时,JSONObject(URLText).length() 会告诉您“父”标签的数量:实际上,它们是匿名父标签的子标签。 JSONObject.names()JSONObject.optJSONArray() 也可能对您有所帮助。
  • @KenY-N 是的,如果我没有在我的问题中提到 Assume 词,那是没有意义的。 :-) 因为assume 词背后有一个巨大的故事。如果我说摘要的话;在实现 Android 应用程序之后,可以通过添加新的父标签来更改 JSON。根据父标签,我正在显示一些 UI 元素。因此,我不想每次使用新的父标签编辑 JSON 时都更改我的代码。如果我可以以编程方式识别有多少父标签和名称,那么我可以根据它加载 UI。我想现在你知道我为什么要写这样的问题了。 :-)

标签: android json arrays


【解决方案1】:

您应该阅读JSONObject.names 的文档

基本上,names()(在 Android 中)可用于获取字段名称数组,然后将其用作您的键。我不会在这里做一个完整的例子,因为如果你自己尝试,你会学得更好。

【讨论】:

  • getNames(JSONObject jo) 但上述字符串中的“JSONObject”在哪里?
  • @TusharDhoot Android 似乎没有包含getNames()
  • @pst 在 Lalit Poptani 的链接之后你会说什么?
  • @LalitPoptani 很好。 @hotveryspicy 你仍然可以使用names() 方法。唯一的区别是您必须解析 JSONArray 而不是字符串数组。
  • 另外,您可以创建自己的getNames() 方法。见code.google.com/p/foursquare-api-java/issues/detail?id=10
【解决方案2】:
public static String Fechingdata(String response){
        Id1.clear();
        Id2.clear();
        Id3.clear();
        name1.clear();
        try{
            JSONArray jsonarray = new JSONArray("["+response+"]");
            JSONObject jsonobject = jsonarray.getJSONObject(0);
            parseForResponse1(jsonobject.getString("ebook"),1);
            parseForResponse2(jsonobject.getString("ebrochure"),2);
            parseForResponse3(jsonobject.getString("emenu"),3);
            return response;

        }catch (Exception e) {
            return "\"" + "Access Denied" + "\"";
        }
    }

    private static void parseForResponse1(String res,int i) {
        try{

            JSONArray jsonarray1 = new JSONArray(res);
            Log.d("jsarry1",""+jsonarray1.length());
            for(int i=0;i<jsonarray1.length();i++){
               JSONObject jsonobject = jsonarray1.getJSONObject(i);
               if(i ==1){
                   Id1.add(jsonobject.getString("id"));
                    name1.add(jsonobject.getString("id"));
               }
               if(i ==2){
                   Id2.add(jsonobject.getString("id"));
                    name2.add(jsonobject.getString("id"));
               }
               if(i ==2){
                   Id3.add(jsonobject.getString("id"));
                    name3.add(jsonobject.getString("id"));
               }    
            }

        }
        catch (Exception e) {
            System.out.println(e.toString());
        }

    }

这个试试这个json解析

【讨论】:

  • 他不知道他的钥匙会是什么......这就是问题所在。
【解决方案3】:
 JSONObject  jobj = new JSONObject(Your Json String);
 JSONArray jarray=jobj.names();

   for(int i=0;i<jarray.length();i++){

      Log.e("parenttag",jarray.getString(i));

   }

通过这个你会得到你在你的jsonString中的所有父标签

【讨论】:

  • 我不知道为什么有人在这里点击“没用”标签。但这对我有用。
  • 很遗憾,API 是按原样设计的......但是对于一个小的工作示例 +1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多