我遇到了JSONArray的问题。我的JSONArray适用于API 22,但不适用于API小于22的设备。 当我改变我的编译sdk时,我得到了大量的错误。 这种奇怪的行为是否有任何解决方案。我无法解释它...... 这是JSON:
{"2":"[{\"id\":\"3\",\"value\":\"1.15\",\"name\":\"Knobi\"}, Dressing]","1":"[{\"id\":\"1\",\"value\":\"0.00\",\"name\":\"Scharf\"}, Soße, {\"id\":\"2\",\"value\":\"1.00\",\"name\":\"Tzatziki\"}, Soße]"}
if(addonsJSON != null)
{
Iterator<String> iterator = addonsJSON.keys();
while (iterator.hasNext())
{
String theKey = iterator.next();
System.out.println(addonsJSON.get(theKey));
JSONArray values = addonsJSON.getJSONArray(theKey);
for (int j = 0; j < values.length(); j+=2)
{
JSONObject vals = new JSONObject(values.getString(j));
CartChild cartChild = new CartChild();
cartChild.name = vals.getString("name");
cartChild.price = vals.getString("value");
itemtotal += Float.parseFloat(vals.getString("value"));
childsList.add(cartChild);
}
}
}
答案 0 :(得分:0)
您的json 不是有效的 json文本。你不能迭代无效的json
像那样修改
{
"1": [
{
"id": "1",
"value": "0.00",
"name": "Scharf"
},
"Soße",
{
"id": "2",
"value": "1.00",
"name": "Tzatziki"
},
"Soße"
],
"2": [
{
"id": "3",
"value": "1.15",
"name": "Knobi"
},
"Dressing"
]
}
上比较你的json和我的
答案 1 :(得分:0)
问题是我将HashMap转换为JSONObject
。之后我将JSONObject
作为字符串保存到SugarORM。转换是错误!
所以我用GSON试了一下。现在它有效。
所以只需使用它:
Gson gson = new Gson();
String json = gson.toJson(hashmap);