我知道如何从普通的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] 删除。
我来说两句