从json填充Spinner数据

时间:2014-04-11 06:12:36

标签: android json

我有一些问题......当我尝试从json填充微调器数据时

这是我的json data

正常解析银行和产品工作

银行。 Bank

产品。 Product

提供商没有数据 provider

日志。 log

我应该怎么做才能将提供程序解析为android spinner?

3 个答案:

答案 0 :(得分:1)

在这里,您尝试从使用json响应json形成的jsonArray中获取提供程序jsonobject

JSONArray categories = jsonObj.getJSONArray("provider");    

但是provider jsonArray不在基本的jsonobject中,但它在产品jsonArray 中。这就是为什么你没有为提供者获取任何数据的原因。

解决方案:

首先从基础jsonobject获取产品jsonarray。然后在循环中为每个产品提取提供者jsonarray。

算法或流程:

  1. JSONObject jsonObj = new JSONObject(json); //基础json对象

  2. JSONArray bankArray = jsonObj.getJSONArray("bank"); //银行json数组

  3. JSONArray productArray = jsonObj.getJSONArray("product"); //产品json数组

    // no. of items in product
    int arrayLength = productArray.length();
    
    for (int i = 0; i < arrayLength; i++) {
      // get single product object from array
      JSONObject singleProductObject = productArray
                .getJSONObject(i);
      // Get the provider array for every product
      JSONArray providerArray = singleProductObject.getJSONArray("provider");          
    
    } 
    
  4. 这样您就可以获得提供者数据。 希望它可以帮到你。

答案 1 :(得分:1)

试试这个..

提供商inside 产品 array

"product": [               // JSONArray
        {                  // JSONObject
            "id": "1",
            "value": "PULSA",
            "name": "Pulsa Telpon",
            "provider": [  // JSONArray

<强>代码

       try {
                JSONObject jsonObj = new JSONObject(json);
                if (jsonObj != null) {
                    JSONObject product_obj = jsonObj.getJSONArray("product").getJSONObject(0);                        
                    JSONArray categories = product_obj
                            .getJSONArray("provider");    
                    for (int i = 0; i < categories.length(); i++) {
                        JSONObject catObj = (JSONObject) categories.get(i);
                        Category cat = new Category(catObj.getInt("id"),
                                catObj.getString("name"));
                        categoriesList.add(cat);
                    }
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

答案 2 :(得分:1)

我理解你的Json对象包含的是memeber,它是一个数组库和产品 provider是内部数组od产品。 我不确定你是否照顾这个

仅针对单品

尝试此操作

JSONArray categories = jsonObj.getJSONArray(&#34; product&#34;)[0] .getJSONArray(&#34; provider&#34;);