我的JSON格式是:
[
{
"change": 1.59,
"name": "ABC",
"price": 10.52,
"volume": 230
},
{
"change": -0.05,
"name": "DEF",
"price": 1.06,
"volume": 1040
},
{
"change": 0.01,
"name": "GHI",
"price": 37.17,
"volume": 542
}
]
我想解析它并将其转换为字符串。我正在使用这种方法进行转换:
JSONObject jsonObj = new JSONObject(jsonStr);
for (int i = 0; i < jsonObj.length(); i++)
{
String change = jsonObj.getString(TAG_CHANGE);
String name = jsonObj.getString(TAG_NAME);
String price = jsonObj.getString(TAG_PRICE);
String volume = jsonObj.getString(TAG_VOLUME);
HashMap<String, String> contact = new HashMap<String, String>();
// adding each child node to HashMap key => value
contact.put(TAG_CHANGE, change);
contact.put(TAG_NAME, name);
contact.put(TAG_PRICE, price);
contact.put(TAG_VOLUME, volume);
// adding contact to contact list
contactList.add(contact);
}
但是我收到了一个错误:
/System.err(867):at org.json.JSON.typeMismatch(JSON.java:111)
如何解决此问题?
答案 0 :(得分:1)
请试一试,它应该有效
JSONArray jsonObj = new JSONArray(jsonStr);
for (int i = 0; i < jsonObj.length(); i++) {
JSONObject c = jsonObj.getJSONObject(i);
String change = c.getString(TAG_CHANGE);
String name = c.getString(TAG_NAME);
String price = c.getString(TAG_PRICE);
String volume = c.getString(TAG_VOLUME);
HashMap < String, String > contact = new HashMap < String, String > ();
contact.put(TAG_CHANGE, change);
contact.put(TAG_NAME, name);
contact.put(TAG_PRICE, price);
contact.put(TAG_VOLUME, volume);
contactList.add(contact);
}
答案 1 :(得分:0)
试试这个..
您收到的回复为JSONArray
,但您的回复是JSONObject
[ // this is JSONArray
{ // this is JSONObject
更改此
JSONObject jsonObj = new JSONObject(jsonStr);
到
JSONArray jsonObj = new JSONArray(jsonStr);
答案 2 :(得分:0)
你正在以错误的方式解析。你的json以包含JsonObjects
的数组开头。这可以被识别,因为方括号表示JsonArray
而花括号表示JsonObject
。从:
JSONArray jsonArr = new JSONArray(jsonStr);
然后遍历每个对象,在每个索引处获取JsonObject
并使用getString
方法为每个键获取值。