Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android获取嵌套在数组中的json数组_Android_Json - Fatal编程技术网

android获取嵌套在数组中的json数组

android获取嵌套在数组中的json数组,android,json,Android,Json,差不多 如何保存在变量中 但是使用这个json代码: { "restarutant": [ { "name": "Hotel Raja", "photo": "http:\/\/i.imgur.com\/Mzt4u.jpg", "address": "93, 2ndc ross, GDP etx.", "area": "Vylaikaval", "cit

差不多

如何保存在变量中

但是使用这个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"
            }
        }
    ]
}
代码:

JSONObject json=新的JSONObject(前一个json);
JSONArray jArray=json.getJSONArray(“餐厅”);
字符串名称[]=新字符串[jArray.length()];
字符串照片[]=新字符串[jArray.length()];
字符串地址[]=新字符串[jArray.length()];
字符串区域[]=新字符串[jArray.length()];
字符串city[]=新字符串[jArray.length()];
字符串评级[]=新字符串[jArray.length()];
串菜[]=新串[jArray.length()];
第一个字符串[]=新字符串[jArray.length()];
第二个字符串[]=新字符串[jArray.length()];

对于(int i=0;i您必须使用
ArrayList

比如说

List<String> name    = new ArrayList<String>();

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

//by add new value to List the key will be the same key inside JSONarray 
name.add(json_data.getString("name"));

}

//and to  call back value from List name

//get first element 0
String first_name = name.get(0);
List name=new ArrayList();

对于(int i=0;i您可以使用
List
而不是字符串
Array

更好地使用模型概念。

步骤:1)

为restartant.java创建一个模型

步骤:2)创建菜系模型

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


希望这对您有所帮助。

为您的json响应创建一个包裹,请参阅下面的代码:-

public class ObjectModel implements Parcelable{

    public String name;
    public String photo;
    public String address;
    public String area;
    public String city;
    public String rating;
    public HashMap<String,Object> cuisines;


    public ObjectModel(Parcel in)
    {
       name = in.readString();
       photo = in.readString();
       address = in.readString();
       area = in.readString();
       city = in.readString();
       rating = in.readString();
       in.readMap(cuisines, Object.class.getClassLoader());
    }
    @SuppressWarnings("rawtypes")
    public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {

        @Override
        public ObjectModel createFromParcel(Parcel source) 
        {
            return new ObjectModel(source);

        }

        @Override
        public ObjectModel[] newArray(int size) 
        {

            return new ObjectModel[size];
        }
    }; 

    @Override
    public int describeContents() 
    {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) 
    {
        dest.writeString(name);
        dest.writeString(photo);
        dest.writeString(address);
        dest.writeString(area);
        dest.writeString(city);
        dest.writeString(rating);
        dest.writeMap(cuisines);
    }

    public ObjectModel()
    {

    }

}


//Write the parser 

private void parseJson(JSONObject baseJson) throws Exception
    {
        JSONArray jsonObjArray = baseJson.getJSONArray("restaurant");

        ObjectModel[] objectModelArray = new ObjectModel[jsonObjArray.length()];
        for(int index = 0;index<jsonObjArray.length();index++)
        {
            ObjectModel obj = new ObjectModel();
            HashMap<String,Object> data = new HashMap<String, Object>();
            JSONObject json = jsonObjArray.getJSONObject(index);
            obj.name = json.getString("name");
            obj.photo = json.getString("photo");
            obj.address = json.getString("address");
            obj.area = json.getString("area");
            obj.city = json.getString("city");
            obj.rating = json.getString("rating");// if it is a string 

            JSONObject cuis = json.getJSONObject("cuisines");
            data.put("first", cuis.getString("first"));
            data.put("second", cuis.getString("second"));
            obj.cuisines = data;

            objectModelArray[index] = obj;

        }
    }
公共类ObjectModel实现了Parcelable{
公共字符串名称;
公众弦乐照片;
公共字符串地址;
公共区域;
公共字符串城市;
公共字符串评级;
公共菜系;
公共对象模型(地块中)
{
name=in.readString();
photo=in.readString();
地址=in.readString();
area=in.readString();
city=in.readString();
额定值=in.readString();
in.readMap(cuisines,Object.class.getClassLoader());
}
@抑制警告(“原始类型”)
public static final Parcelable.Creator=新建Parcelable.Creator(){
@凌驾
公共对象模型createFromParcel(地块源)
{
返回新的ObjectModel(源);
}
@凌驾
公共对象模型[]新数组(整数大小)
{
返回新的ObjectModel[大小];
}
}; 
@凌驾
公共int描述内容()
{
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志)
{
目的地书面记录(名称);
目的地书面记录(照片);
目的地记录(地址);
目的地书面限制(区域);
目的地登记册(城市);
目的减记资本(评级);
目的书面地图(菜系);
}
公共对象模型()
{
}
}
//编写解析器
私有void parseJson(JSONObject baseJson)引发异常
{
JSONArray jsonobjaray=baseJson.getJSONArray(“餐厅”);
ObjectModel[]objectModelArray=新的ObjectModel[jsonObjArray.length()];

对于(int index=0;indexb)但“第一个”和“第二个”值,这两个嵌套值是问题所在。这对我来说很有效,在编辑了大量代码后,我达到了我想要的,希望这对以后的其他人有所帮助,并感谢您的时间。
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;
    }

}
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;
    }
}
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();
        }
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);
        }
Name:Hotel Raja First:Chiense Second: Korean
Name:Hotel Raja2 First:Chiense2 Second: Korean2
public class ObjectModel implements Parcelable{

    public String name;
    public String photo;
    public String address;
    public String area;
    public String city;
    public String rating;
    public HashMap<String,Object> cuisines;


    public ObjectModel(Parcel in)
    {
       name = in.readString();
       photo = in.readString();
       address = in.readString();
       area = in.readString();
       city = in.readString();
       rating = in.readString();
       in.readMap(cuisines, Object.class.getClassLoader());
    }
    @SuppressWarnings("rawtypes")
    public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {

        @Override
        public ObjectModel createFromParcel(Parcel source) 
        {
            return new ObjectModel(source);

        }

        @Override
        public ObjectModel[] newArray(int size) 
        {

            return new ObjectModel[size];
        }
    }; 

    @Override
    public int describeContents() 
    {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) 
    {
        dest.writeString(name);
        dest.writeString(photo);
        dest.writeString(address);
        dest.writeString(area);
        dest.writeString(city);
        dest.writeString(rating);
        dest.writeMap(cuisines);
    }

    public ObjectModel()
    {

    }

}


//Write the parser 

private void parseJson(JSONObject baseJson) throws Exception
    {
        JSONArray jsonObjArray = baseJson.getJSONArray("restaurant");

        ObjectModel[] objectModelArray = new ObjectModel[jsonObjArray.length()];
        for(int index = 0;index<jsonObjArray.length();index++)
        {
            ObjectModel obj = new ObjectModel();
            HashMap<String,Object> data = new HashMap<String, Object>();
            JSONObject json = jsonObjArray.getJSONObject(index);
            obj.name = json.getString("name");
            obj.photo = json.getString("photo");
            obj.address = json.getString("address");
            obj.area = json.getString("area");
            obj.city = json.getString("city");
            obj.rating = json.getString("rating");// if it is a string 

            JSONObject cuis = json.getJSONObject("cuisines");
            data.put("first", cuis.getString("first"));
            data.put("second", cuis.getString("second"));
            obj.cuisines = data;

            objectModelArray[index] = obj;

        }
    }