如何将 JSONObjects 转换为 JSONArray?
Posted
技术标签:
【中文标题】如何将 JSONObjects 转换为 JSONArray?【英文标题】:How to convert JSONObjects to JSONArray? 【发布时间】:2014-05-06 10:27:20 【问题描述】:我有这样的回应:
"songs":
"2562862600":"id":"2562862600""pos":1,
"2562862620":"id":"2562862620""pos":1,
"2562862604":"id":"2562862604""pos":1,
"2573433638":"id":"2573433638""pos":1
这是我的代码:
List<NameValuePair> param = new ArrayList<NameValuePair>();
JSONObject json = jParser.makeHttpRequest(url, "GET", param);
JSONObject songs= json.getJSONObject("songs");
如何将"songs"
转换为 JSONArray?
【问题讨论】:
【参考方案1】:类似这样的:
JSONObject songs= json.getJSONObject("songs");
Iterator x = songs.keys();
JSONArray jsonArray = new JSONArray();
while (x.hasNext())
String key = (String) x.next();
jsonArray.put(songs.get(key));
【讨论】:
【参考方案2】:甚至更短并且带有 json 函数:
JSONObject songsObject = json.getJSONObject("songs");
JSONArray songsArray = songsObject.toJSONArray(songsObject.names());
【讨论】:
【参考方案3】:您的响应应该是这样的,才能被限定为 Json Array。
"songs":[
"2562862600": "id":"2562862600", "pos":1,
"2562862620": "id":"2562862620", "pos":1,
"2562862604": "id":"2562862604", "pos":1,
"2573433638": "id":"2573433638", "pos":1
]
您可以按如下方式解析您的响应
String resp = ...//String output from your source
JSONObject ob = new JSONObject(resp);
JSONArray arr = ob.getJSONArray("songs");
for(int i=0; i<arr.length(); i++)
JSONObject o = arr.getJSONObject(i);
System.out.println(o);
【讨论】:
【参考方案4】:要反序列化响应需要使用HashMap
:
String resp = ...//String output from your source
Gson gson = new GsonBuilder().create();
gson.fromJson(resp,TheResponse.class);
class TheResponse
HashMap<String,Song> songs;
class Song
String id;
String pos;
【讨论】:
【参考方案5】:JSONObject songs= json.getJSONObject("songs");
使用 JSONArray 进行直接转换
JSONArray array = (JSONArray)songs.get("songs");
【讨论】:
以上是关于如何将 JSONObjects 转换为 JSONArray?的主要内容,如果未能解决你的问题,请参考以下文章
Ext JS 4:使用 JavaScript 将 JSON 对象转换为另一个 JSON 对象
在 Java 中合并(Concat)多个 JSONObjects
Android如何对JSONObjects的JSONArray进行排序
如何使用 Retrofit2 处理嵌套 JsonObjects 的动态字段