JSON解析到具有多个Android对象的List视图

时间:2016-07-02 19:09:15

标签: android json

需要帮助

我有Json,我必须检索对象但无法检索。 我也使用了多个对象来检索但没有成功。 JSON:

{
    "status": 1,
    "data": [{
        "restaurent_id": "1",
        "user_id": "6",
        "zone_id": "1",
        "restaurentAddress": {
            "restaurent_address_id": "1"
        },
        "restaurentInfo": {
            "restaurent_info_id": "1",
            "restaurent_bussiness_owner_name": "Vijay"
        },
        "restaurentSetting": {
            "restaurent_setting_id": "1",
            "minimum_purcase": "200",
            "payment_method_id": "1",
            "title": "Best Hotel"
        },
        "zone": {
            "zone_id": "1",
            "by_zipcode": "1"
        }

    }]
}

我想获取restaurentAddress和restaurentInfo

我的mainActivity.java文件

package com.example.premi.jsonlist;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView output = (TextView) findViewById(R.id.textView1);
        String strJson="{\n" +
                "\t\"status\": 1,\n" +
                "\t\"data\": [{\n" +
                "\t\t\"restaurent_id\": \"1\",\n" +
                "\t\t\"user_id\": \"6\",\n" +
                "\t\t\"zone_id\": \"1\",\n" +
                "\t\t\"restaurentAddress\": {\n" +
                "\t\t\t\"restaurent_address_id\": \"1\"\n" +
                "\t\t},\n" +
                "\t\t\"restaurentInfo\": {\n" +
                "\t\t\t\"restaurent_info_id\": \"1\",\n" +
                "\t\t\t\"restaurent_bussiness_owner_name\": \"Vijay\"\n" +
                "\t\t},\n" +
                "\t\t\"restaurentSetting\": {\n" +
                "\t\t\t\"restaurent_setting_id\": \"1\",\n" +
                "\t\t\t\"minimum_purcase\": \"200\",\n" +
                "\t\t\t\"payment_method_id\": \"1\",\n" +
                "\t\t\t\"title\": \"Best Hotel\"\n" +
                "\t\t},\n" +
                "\t\t\"zone\": {\n" +
                "\t\t\t\"zone_id\": \"1\",\n" +
                "\t\t\t\"by_zipcode\": \"1\"\n" +
                "\t\t}\n" +
                "\n" +
                "\t}]\n" +
                "}";
        String dataoutput = "";
        try {
            JSONObject  jsonRootObject = new JSONObject(strJson);

            //Get the instance of JSONArray that contains JSONObjects
            JSONObject status = jsonRootObject.optJSONObject("status");
            JSONArray Dataarray =status.getJSONArray("data");

            //Iterate the jsonArray and print the info of JSONObjects
            for(int i=0; i < Dataarray.length(); i++){
                JSONObject jsonObject = Dataarray.getJSONObject(i);
JSONObject Data = jsonObject.getJSONObject("restaurentAddress");

                for(int j = 0 ; j < Data.length(); j++){
                    JSONObject GetData =Data.getJSONObject(String.valueOf(j));
                int id = Integer.parseInt(GetData.getString("restaurent_address_id"));
                String postcode = GetData.getString("postcode");
                String addresss = GetData.getString("restaurent_address");


                dataoutput += " : \n id= "+ id +" \n postcode= "+ postcode +" \n address= "+ addresss +" \n ";
            }}
            output.setText(dataoutput);
        } catch (JSONException e) {e.printStackTrace();}
    }
}

2 个答案:

答案 0 :(得分:2)

试试这个:

try {
    JSONObject object = (JSONObject) new JSONTokener(YOUR_JSON_STRING).nextValue();
    String restaurentAddressId = object.getJSONArray("data").getJSONObject(0).getJSONObject("restaurentAddress").getString("restaurent_address_id");
    String restaurentInfoId = object.getJSONArray("data").getJSONObject(1).getJSONObject("restaurentInfo").getString("restaurent_info_id");
    String restaurentBizOwnerName = object.getJSONArray("data").getJSONObject(1).getJSONObject("restaurentInfo").getString("restaurent_business_owner_name");

}
catch (JSONException e) {
}

答案 1 :(得分:1)

它完成了我试过这个

   try {
        JSONObject  jsonRootObject = new JSONObject(strJson);

        //Get the instance of JSONArray that contains JSONObjects
        JSONArray mainnode =jsonRootObject.getJSONArray("data");

        //Iterate the jsonArray and print the info of JSONObjects
        for(int i=0; i < mainnode.length(); i++){
            JSONObject jsonObject = mainnode.getJSONObject(i);
            JSONObject Data = jsonObject.getJSONObject("restaurentInfo");
                int id = Integer.parseInt(Data.getString("restaurent_info_id"));
                String postcode = Data.getString("restaurent_phone_number");
                String addresss = Data.getString("restaurent_bussiness_owner_name");


                dataoutput += " : \n restaurent_id= "+ id +" \n restaurent_info_id= "+ postcode +" \n restaurent_address_id= "+ addresss +" \n ";

        }
        output.setText(dataoutput);
    } catch (JSONException e) {e.printStackTrace();}
}

我刚刚删除了状态对象

和另一个for循环谢谢你的帮助得到了一点帮助:)