android get json数组嵌套在数组中

use*_*401 3 android json

这个问题

如何保存变量?

但是使用这个json代码:

{
    "restarutant": [
        {
            "name": "Hotel Raja",
            "photo": "http:\/\/i.imgur.com\/Mzt4u.jpg",
            "address": "93, 2ndc ross, GDP etx.",
            "area": "Vylaikaval",
            "city": "Bangalore",
            "rating": "4",
            "cuisines": {
                "first": "Chinese",
                "second": "Korean"
            }
        },
        {
            "name": "Hotel Raja2",
            "photo": "http:\/\/i.imgur2.com\/Mzt4u.jpg",
            "address": "93, 2ndc ross, GDP etx. number2",
            "area": "Vylaikaval2",
            "city": "Bangalore2",
            "rating": "4",
            "cuisines": {
                "first": "Chinese2",
                "second": "Korean2"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

码:

JSONObject json = new JSONObject(thepreviousjson);
JSONArray jArray = json.getJSONArray("restaurant");

String name[] = new String[jArray.length()];
String photo[] = new String[jArray.length()];
String address[] = new String[jArray.length()];
String area[] = new String[jArray.length()];
String city[] = new String[jArray.length()];
String rating[] = new String[jArray.length()];

String cuisines[] = new String[jArray.length()];
String first[] = new String[jArray.length()];
String second[] = new String[jArray.length()];

for(int i=0; i<jArray.length(); i++){
    JSONObject json_data = jArray.getJSONObject(i);

    name[i] = json_data.getString("name");
    photo[i] = json_data.getString("photo");
    address[i] = json_data.getString("address");
    area[i] = json_data.getString("area");
    city[i] = json_data.getString("city");
    rating[i] = json_data.getString("rating");
}
Run Code Online (Sandbox Code Playgroud)

关键是要存储: name[0] = "Hotel Raja"... name[1] = "Hotel Raja2" first[0] = Chinese, second[0] = Korean, first[1] = Chinese2, second[1] = Korean2

我尝试了几种组合,但没有任何反应,我需要在代码中修改什么?谢谢

Ami*_*pta 6

您可以使用List而不是String Array.

更好地使用模型概念.

步骤1)

为Restarutant.java创建一个模型

public class Restarutant {
    private String name;
    private String photoUrl;
    private String address;
    private String area;
    private String city;
    private int rating;
    private Cuisines cuisines;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhotoUrl() {
        return photoUrl;
    }
    public void setPhotoUrl(String photoUrl) {
        this.photoUrl = photoUrl;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getArea() {
        return area;
    }
    public void setArea(String area) {
        this.area = area;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public int getRating() {
        return rating;
    }
    public void setRating(int rating) {
        this.rating = rating;
    }
    public Cuisines getCuisines() {
        return cuisines;
    }
    public void setCuisines(Cuisines cuisines) {
        this.cuisines = cuisines;
    }

}
Run Code Online (Sandbox Code Playgroud)

步骤:2)为美食创建模型

public class Cuisines {
    private String first;
    private String second;
    public String getFirst() {
        return first;
    }
    public void setFirst(String first) {
        this.first = first;
    }
    public String getSecond() {
        return second;
    }
    public void setSecond(String second) {
        this.second = second;
    }
}
Run Code Online (Sandbox Code Playgroud)

最后一步:现在如何在解析后将数据存储在模型中

List<Restarutant> list = new ArrayList<Restarutant>();
        try {
            JSONObject json = new JSONObject(thepreviousjson);
            JSONArray jArray = json.getJSONArray("restaurant");
            for (int i = 0; i < jArray.length(); i++) {
                JSONObject json_data = jArray.getJSONObject(i);
                Restarutant data = new Restarutant();// Create Object Here
                data.setName(json_data.getString("name"));
                data.setPhotoUrl(json_data.getString("photo"));
                data.setAddress(json_data.getString("address"));
                data.setArea(json_data.getString("area"));
                data.setCity(json_data.getString("city"));
                JSONObject cuisines = json_data.getJSONObject("cuisines");
                Cuisines cuisine = new Cuisines();// Create Object here
                cuisine.setFirst(cuisines.getString("first"));
                cuisine.setSecond(cuisines.getString("second"));
                data.setCuisines(cuisine);// setting the cuisine
                list.add(data);// Finally adding the model to List

            }

        } catch (JSONException e) {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

现在如何从List中检索值

for(int i=0;i<list.size();i++){
        Restarutant restarutant=list.get(i);
        String name=restarutant.getName();
        String first=restarutant.getCuisines().getFirst();
        String second=restarutant.getCuisines().getSecond();
        System.out.println("Name: "+name+"First "+first+"Second "+second);
        }
Run Code Online (Sandbox Code Playgroud)

输出:

Name:Hotel Raja First:Chiense Second: Korean
Name:Hotel Raja2 First:Chiense2 Second: Korean2
Run Code Online (Sandbox Code Playgroud)

希望这会帮助你.