【问题标题】:How to fetch Data From JSON如何从 JSON 中获取数据
【发布时间】:2013-05-30 06:22:39
【问题描述】:

我有以下来自 JSON 的数据

{
        "MenuName": "starter dish",
        "SubMenu": [
            "pizza dish1",
            "pizza dish2"
        ],
        "Price": [
            "100",
            "110"
        ]
    },

从这里我可以轻松地从“Menuname”键获取数据作为开胃菜,但是当我从“Submenu”获取数据时,我得到整个字符串为["pizza dish1", "pizza dish2"]

请建议我区分pizza dish1 and pizza dish2的方法

【问题讨论】:

标签: android json parsing android-layout android-listview


【解决方案1】:

SubmenuPrice 不是 String 它是 JSONArray 所以您需要使用 for-loopSubmenu JSONArray 获取所有值:

JSONArray jsonsubmenu=yourjsonobject.getJSONArray("Submenu");

  for(int i=0;i < jsonsubmenu.length();i++){     
     // get all values from jsonsubmenu JSONArray..
      String str_value=jsonsubmenu.optString(i);
      ....
   }

【讨论】:

    【解决方案2】:

    试试这个

              for (int i = 0; i < jsonArray.length(); i++) {
                 jsonArray.getJSONObject(i).getInt("SubMenu");
                 }
    

    【讨论】:

      【解决方案3】:

      您可以使用this link 为您的响应创建 POGO 类。它会自动为您的响应生成类。

      使用 google GSON 库解析您的回复。

      或者您可以简单地创建一个 JSON 数组或对象来解析它。在您的情况下,它是 JSON 对象或 JSON 数组。

      【讨论】:

        【解决方案4】:

        你好,在那个 senarerio 中你必须使用

            JSONArray _submenu = object.getJSONArray("SubMenu");
                for (int i = 0; i < _submenu.length(); i++) {
                    String text = _submenu.getString(i);
                }
                JSONArray _price = object.getJSONArray("Price");
                for (int i = 0; i < _price.length(); i++) {
                    String text = _price.getString(i);
                }
        

        【讨论】:

          【解决方案5】:

          您可以检索数组值并将其存储在 string[] 中并根据需要使用它们。即如下..

          try {
                      JSONObject jObject = new JSONObject(jsonString);
                      JSONArray jSubmenu = jObject.getJSONArray("SubMenu");
                      subMenu = new String[jSubmenu.length()];
                      for (int i = 0; i < subMenu.length; i++) {
                          subMenu[i] = jSubmenu.getString(i);
                      }
                      JSONArray jPrice = jObject.getJSONArray("Price");
                      price = new String[jPrice.length()];
                      for (int i = 0; i < price.length; i++) {
                          price[i] = jPrice.getString(i);
                      }
          
                  } catch (Exception e) {
                      // TODO: handle exception
                  }
          

          【讨论】:

            【解决方案6】:

            只是简单介绍一下 - 阅读并使用 GSON。

            对于简单的小工作,我发现它是最好的。对于复杂或较长的结构,运行速度不是最快的,但在开发方面非常快。

            这是链接:google-gson

            【讨论】:

              猜你喜欢
              • 2012-04-25
              • 2021-12-08
              • 1970-01-01
              • 2023-03-28
              • 2020-10-03
              • 2019-07-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多