如何从多个json对象获取数据

尼莱·斯里瓦斯塔瓦(Neelay Srivastava)

我知道如何从普通的json数据中获取数据,但是最近我遇到了这个新问题,其中json看起来像

 "product_1": {
"productId": "product_1",
"customerId": "customer_1",
"brandCode": "BRD0050",
"brandName": "ABC.ST.",
"productCode": 700251,
"productDesc": "ABC  AB 50gm Sac",
"mrp": 15,
"expiry": 1608461977
},
"product_2": {
"productId": "product_2",
"customerId": "customer_1",
"brandCode": "BRD0050",
"brandName": "ABC.ST.",
"productCode": 700251,
"productDesc": "ABC  AB 50gm Sac",
"mrp": 17,
"expiry": 1608462037
},
"product_3": {
"productId": "product_3",
"customerId": "customer_1",
"brandCode": "BRD0050",
"brandName": "ABC.ST.",
"productCode": 700251,
"productDesc": "ABC  AB 50gm Sac",
"mrp": 17,
"expiry": 1608461978
}...

直到product_150

所以我在谷歌上找了好一段时间,但无法获得任何价值,这就是我尝试过的

    try {
        JSONObject obj = new JSONObject(loadJSONFromAsset());
        //    JSONArray m_jArry = obj.getJSONArray("product_" + j);
        Iterator<String> keyIterator = obj.keys();
        Log.e("Details",""+obj.keys().hasNext());
        while(keyIterator.hasNext()) {
            String productKey = keyIterator.next();

            JSONObject jo_inside = obj.getJSONObject(productKey);


            ArrayList<HashMap<String, String>> formList = new ArrayList<HashMap<String, String>>();
            HashMap<String, String> m_li;

           /* for (int i = 0; i < jo_inside.length(); i++) {
                Log.e("Details",""+jo_inside.length());
                Log.e("Details-->", jo_inside.getString("productId"));
                String formula_value = jo_inside.getString("formule");
                String url_value = jo_inside.getString("url");

                //Add your values in your `ArrayList` as below:
                m_li = new HashMap<String, String>();
                m_li.put("formule", formula_value);
                m_li.put("url", url_value);

                formList.add(m_li);


            }

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

我从资产文件中获取数据的位置。我只是试图在Log中获取数据,但不知道我做错了什么或我应该怎么做?目前,我做了一个for循环直到150,并得到了类似的数据。

威尔曼

我猜这obj.getJSONArray没有返回任何东西,因为JSON没有被标记为数组。删除您的外部for循环,然后使用obj.keys()它应该在json对象的顶层为您提供一个键数组,根据您提供的示例将其为[“ product_1”,“ product_2”,“ product_3”],那么您可以循环例如,通过该数组获取每个生产对象;

Iterator<String> keyIterator = obj.keys();
while(keyIterator.hasNext()) 
{
    String productKey = keyIterator.next();
    JSONObject jo_inside = obj.getJSONObject(productKey);

    ... rest of your inner for loop here ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章