[英]JSONArray Parsing error
我需要解析JSON數組的幫助。
[
{
"Header1": [
{
"path": "upload/images/1430572021716.jpg"
},
{
"path": "upload/images/1430574003703.jpg"
}
]
},
{
"Header2": [
{
"path": "upload/images/1430574124119.jpg"
},
{
"path": "upload/images/1430574203001.jpg"
}
]
}
]
我完美地收到了上面的JSONArray。 我想遍歷數組並提取標題文本“ Header1”和path的值
我不斷遇到以下錯誤消息
at 0 of type org.json.jsonarray cannot be converted to jsonobject
經過研究后,這是由於系統無法解析為JSON數組。 如果我將“列表”數組更改為objct,它確實可以工作,但是,這不是數組,因此我失去了遍歷它的能力。
這是我試圖解析數組的代碼
JSONArray mArray;
mArray = json;
//download json array
for (int i = 0; i < mArray.length(); i++) {
if(mArray != null) {
JSONArray list = mArray.getJSONArray(i);
if(list != null) {
for(int a = 0; a < list.length();a++) {
JSONObject elem = list.getJSONObject(a);
if (elem != null) {
listdata.add(elem.getString("path"));
}
}
}
}
}
您正在嘗試將頂級數組的每個元素都視為另一個數組-不是,它是一個對象。 該對象然后有另一字段,其值是一個數組。 所以你想要像這樣的東西:
for (int i = 0; i < json.length(); i++) {
JSONObject container = json.getJSONObject(i);
// We don't know the property name, but there's only one, apparently...
String key = container.keys().next();
JSONArray subarray = container.getJSONArray(key);
for (int j = 0; j < subarray.length(); j++) {
listdata.add(subarray.getJSONObject(j).getString("path"));
}
}
JSON的第二級包含JSON數組元素。
正如您已經提到的,您需要將它們作為JSONObject
獲得。
然后從該對象getJSONArray
:
//download json array
for (int i = 0; i < mArray.length(); i++) {
if(mArray != null) {
JSONObject element = mArray.getJSONObject(i);
JSONArray list = element.getJSONArray("Header1");
if(list != null) {
但是,由於"Header..."
鍵正在更改,因此您可能需要通過調用keys()
來推斷keys()
。
一個更簡單的方法是使用GSON庫並創建類似於JSON的POJO類,這是一個不錯的網站
這適用於JavaScript,非常簡單。
//mArray is your json array
let newArray = JSON.stringify(mArray);
mArray = JSON.parse(newArray);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.