如何parsingJSON并将其值转换为数组?

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

它会打印configuration文件,约翰如果json是这样的:

 {'profiles':'john'} 

这很酷。 这很好,因为我可以使用这些variables。 但是,如果JSON是这样的:

 {'profiles': [{'name':'john', 'age': 44}, {'name':'Alex','age':11}]} 

在这种情况下,整个值将是数组。 基本上,我只是想抓住这个数组(在这个例子中是“value”),然后把它变成JAVA可以使用的实际数组。 我怎样才能做到这一点? 谢谢。

例如:

 {'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)[字符]开始。

希望这可以帮助。

你可以selectquick-jsonparsing器来满足你的需求

quick-jsonparsing器非常简单,灵活,速度非常快,可以自定义。 试试这个

[quick-jsonparsing器]( https://code.google.com/p/quick-json/ ) – quick-json特性 –

  • 符合JSON规范(RFC4627)

  • 高性能的JSONparsing器

  • 支持灵活/可configuration的分析方法

  • 任何JSON Heirarchy的键/值对的可configurationvalidation

  • 易于使用#非常less的脚印

  • 提高开发人员的便利性,便于追踪exception

  • 可插入的自定义validation支持 – 键/值可以通过在遇到时configuration自定义validation器进行validation

  • validation和不validationparsing器支持

  • 支持使用quick-jsonvalidationparsing器的两种types的configuration(JSON / XML)

  • 需要JDK 1.5#不依赖于外部库

  • 通过对象序列化支持Json生成

  • 支持parsing过程中的集合typesselect

例如

 JsonParserFactory factory=JsonParserFactory.getInstance(); JSONParser parser=factory.newJsonParser(); Map jsonMap=parser.parseJson(jsonString);