[英]Json multiple array parsing is null
我正在解析json數據,我有2數組。 我已經成功解析了第一個json數組“ item” ,現在我不知道如何解析第二個“ img” 。
這是我的代碼:
{
"item": [
{
"description": "بافت عالی با قاب",
"price": "11000000000000",
"country": "ايران",
"address": "کوچه مهران یک پلاک7",
"region": "البرز",
"city": "کرج",
"mobile": null,
"cat": "حیوانات و مناظر طبیعی",
"img": [
"http://tajerfarsh.com/oc-content/themes/tgsh/images/slider/slider11.jpg",
"http://tajerfarsh.com/oc-content/themes/tgsh//images/categorys/109.jpg",
"http://tajerfarsh.com/oc-content/themes/tgsh//images/categorys/125.jpg"
]
}
]
}
這是android邊碼:
public class ParseJSON1 {
public static String[] ids;
public static String[] descriptions;
public static String[] email;
public static String[] country;
public static String[] address;
public static String[] region;
public static String[] city;
public static String[] cat;
public static String[] image;
public static String[] mobiles;
public static final String JSON_ARRAY = "item";
public static final String KEY_ID = "id";
public static final String DESCCRIPTION = "description";
public static final String EMAIL = "emails";
public static final String COUNTRY = "country";
public static final String ADDRESS = "address";
public static final String REGION = "region";
public static final String CITY = "city";
public static final String CATEGORY = "cat";
public static final String IMAGE = "img";
public static final String MOBILE = "mobile";
private JSONArray users = null;
private String json;
public ParseJSON1(String json){
this.json = json;
}
protected void parseJSON1(){
JSONObject jsonObject=null;
try {
jsonObject = new JSONObject(json);
users = jsonObject.getJSONArray(JSON_ARRAY);
ids = new String[users.length()];
descriptions = new String[users.length()];
country = new String[users.length()];
address = new String[users.length()];
region = new String[users.length()];
city = new String[users.length()];
cat = new String[users.length()];
email = new String[users.length()];
mobiles = new String[users.length()];
for(int i=0;i<users.length();i++){
JSONObject jo = users.getJSONObject(i);
ids[i] = jo.getString(KEY_ID);
descriptions[i] = jo.getString(DESCCRIPTION);
email[i] = jo.getString(EMAIL);
country[i] = jo.getString(COUNTRY);
address[i] = jo.getString(ADDRESS);
region[i] = jo.getString(REGION);
city[i] = jo.getString(CITY);
cat[i] = jo.getString(CATEGORY);
// image[i] = jo.getString(IMAGE);
mobiles[i] = jo.getString(MOBILE);
JSONArray img = jsonObject.getJSONArray("img");
image = new String[img.length()];
for (int j=0;j<img.length();j++){
image[i] = jo.getString(IMAGE);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
怎么解決呢?
像這樣解析它:
JSONArray img = jo.getJSONArray("img");
image = new String[img.length()];
for (int j=0;j<img.length();j++){
image[j] = img.getString(j);
}
此外,最好使用GSON之類的庫進行解析。
嘗試實現下面的代碼,使用List而不是數組,它更容易出錯(例如Bounds of Bounds)
try {
jsonObject = new JSONObject(json);
users = jsonObject.getJSONArray(JSON_ARRAY);
List<String> ids = new ArrayList<>();
List<String> descriptions = new ArrayList<>();
List<String> country = new ArrayList<>();
List<String> address = new ArrayList<>();
List<String> region = new ArrayList<>();
List<String> city = new ArrayList<>();
List<String> cat = new ArrayList<>();
List<String> email = new ArrayList<>();
List<String> mobiles = new ArrayList<>();
List<String[]> img = new ArrayList<>();
for(int i=0;i<users.length();i++){
JSONObject jo = users.getJSONObject(i);
ids.add(jo.getString(KEY_ID));
// Do te rest of the "add"
JSONArray imgs = jo.getJSONArray(IMAGE)
image = new String[imgs.length()];
for (int j=0;j<imgs.length();j++){
image = jo.getString(j);
img .add(image);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.