public static void parseProfilesJson(String the_json){
try {
JSONObject myjson = new JSONObject(the_json);
JSONArray nameArray = myjson.names();
JSONArray valArray = myjson.toJSONArray(nameArray);
for(int i=0;i<valArray.length();i++)
{
String p = nameArray.getString(i) + "," + ValArray.getString(i);
Log.i("p",p);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
如您所见,此示例代码将打印出JSON的 KEY ,然后是JSONS的 VALUES 。
如果json是这样的话,它会打印个人资料,约翰:
{'profiles':'john'}
那很酷。那很好,因为我可以使用这些变量。但是,如果JSON是这样的话,那该怎么办:
{'profiles': [{'name':'john', 'age': 44}, {'name':'Alex','age':11}]}
在这种情况下,整个值将是数组。基本上,我只想获取该数组(在这种情况下是“值”)...并将其转换为JAVA可以使用的实际数组。我怎样才能做到这一点?感谢。
答案 0 :(得分:57)
为您的例子:
{'profiles': [{'name':'john', 'age': 44}, {'name':'Alex','age':11}]}
你必须做一些这样的事情:
JSONObject myjson = new JSONObject(the_json);
JSONArray the_json_array = myjson.getJSONArray("profiles");
返回数组对象。
然后迭代将如下:
int size = the_json_array.length();
ArrayList<JSONObject> arrays = new ArrayList<JSONObject>();
for (int i = 0; i < size; i++) {
JSONObject another_json_object = the_json_array.getJSONObject(i);
//Blah blah blah...
arrays.add(another_json_object);
}
//Finally
JSONObject[] jsons = new JSONObject[arrays.size()];
arrays.toArray(jsons);
//The end...
您必须确定数据是否为数组(只需检查charAt(0)
是否以[
字符开头)。
希望这有帮助。
答案 1 :(得分:0)
您可以选择quick-json解析器来满足您的要求......
quick-json解析器非常直观,灵活,非常快速且可自定义。试试这个
[quick-json parser](https://code.google.com/p/quick-json/) - quick-json功能 -
符合JSON规范(RFC4627)
高性能JSON解析器
支持灵活/可配置的解析方法
任何JSON Heirarchy的键/值对的可配置验证
易于使用#非常少的足迹
提高开发人员友好且易于跟踪的异常
可插入自定义验证支持 - 可以通过在遇到时配置自定义验证器来验证密钥/值
验证和非验证解析器支持
支持使用quick-json验证解析器的两种配置类型(JSON / XML)
需要JDK 1.5#不依赖外部库
通过对象序列化支持Json生成
在解析过程中支持集合类型选择
例如
JsonParserFactory factory=JsonParserFactory.getInstance();
JSONParser parser=factory.newJsonParser();
Map jsonMap=parser.parseJson(jsonString);