如何在Android中解析JSON到对象

时间:2013-05-14 02:07:57

标签: java android json parsing

我有一些JSON数据,如下所示:

{
    "pp": {
        "status_marital_pmg": "BELUM MENIKAH",
        "nama_pmg": "IWEN LENDER",
        "kerjab_pmg": "-",
        "pendidikan_pmg": "S1",
        "agama_pmg": "KRISTEN KATOLIK",
        "bidang_industri_pmg": "JASA KEUANGAN",
        "warga_pmg": "INDONESIA",
        "hubungan_pmg_ttg": "Diri Sendiri",
        "pendanaana_pmg": "GAJI",
        "pendanaan_pmg": "GAJI",
        "usia_pmg": 33,
        "penghasilan_pmg": "> RP. 50 JUTA - RP. 100 JUTA",
        "kelamin_pmg": "Pria",
        "tujuan_pmg": "INVESTASI",
        "tujuana_pmg": "INVESTASI",
        "kerja_pmg": "KARYAWAN",
        "bidang_industria_pmg": "JASAKEUANGAN"
    }
}

我正在尝试使用以下类映射此JSON:

public class VariabelViewer {
    private String nama_pmg;
    private String pendidikan_pmg;
    private String warga_pmg;
    private String usia_pmg;
    private String status_marital_pmg;
    private String kelamin_pmg;
    private String agama_pmg;
    private String tujuan_pmg;
    private String tujuana_pmg;
    private String penghasilan_pmg;
    private String pendanaan_pmg;
    private String pendanaana_pmg;
    private String bidang_industria_pmg;
    private String hubungan_pmg_ttg;

    public VariabelViewer(String nama_pmg, String pendidikan_pmg,
            String warga_pmg, String usia_pmg, String status_marital_pmg,
            String kelamin_pmg, String agama_pmg, String tujuan_pmg,
            String tujuana_pmg, String penghasilan_pmg, String pendanaan_pmg,
            String pendanaana_pmg, String bidang_industria_pmg,
            String hubungan_pmg_ttg) {

        this.nama_pmg = nama_pmg;
        this.pendidikan_pmg = pendidikan_pmg;
        this.warga_pmg = warga_pmg;
        this.usia_pmg = usia_pmg;
        this.status_marital_pmg = status_marital_pmg;
        this.kelamin_pmg = kelamin_pmg;
        this.agama_pmg = agama_pmg;
        this.tujuan_pmg = tujuan_pmg;
        this.tujuana_pmg = tujuana_pmg;
        this.penghasilan_pmg = penghasilan_pmg;
        this.pendanaan_pmg = pendanaan_pmg;
        this.pendanaana_pmg = pendanaana_pmg;
        this.bidang_industria_pmg = bidang_industria_pmg;
        this.hubungan_pmg_ttg = hubungan_pmg_ttg;
    }

    public String getNama_pmg() {
        return nama_pmg;
    }

    public String getPendidikan_pmg() {
        return pendidikan_pmg;
    }

    public String getWarga_pmg() {
        return warga_pmg;
    }

    public String getUsia_pmg() {
        return usia_pmg;
    }

    public String getStatus_marital_pmg() {
        return status_marital_pmg;
    }

    public String getKelamin_pmg() {
        return kelamin_pmg;
    }

    public String getAgama_pmg() {
        return agama_pmg;
    }

    public String getTujuan_pmg() {
        return tujuan_pmg;
    }

    public String getTujuana_pmg() {
        return tujuana_pmg;
    }

    public String getPenghasilan_pmg() {
        return penghasilan_pmg;
    }

    public String getPendanaan_pmg() {
        return pendanaan_pmg;
    }

    public String getPendanaana_pmg() {
        return pendanaana_pmg;
    }

    public String getBidangindustria_pmg() {
        return bidang_industria_pmg;
    }

    public String getHubungan_pmg_ttg() {
        return hubungan_pmg_ttg;
    }
}

我不知道如何在我的代码中声明正确的类并解析数据。我认为我的JSON代表了一个包含另一个JSON数组的JSON数组,但我的理解可能是错的?任何人都可以告诉我如何解析这个?感谢。

2 个答案:

答案 0 :(得分:2)

  

认为我的JSON也是包含JSON数组的JSON数组,是我的   理解错了吗?

是的,你错了,因为当前的Json String只包含JSONObject而不是JSONArray。所以你需要先将当前字符串转换为JSONObject,然后从中提取所有对象:

JSONObject json=new JSONObject(<current json string>);

// get all key names from JSONObject
JSONArray allnames=json.names();

for(int i=0;i<allnames.length;i++){

  JSONObject jsonobj=json.getJSONObject(allnames[i]);

  // get all values from inner JSONObject and store in any data structure 
  //get status_marital_pmg
  String str_status_marital_pmg=jsonobj.optString("status_marital_pmg");
  ....

}

答案 1 :(得分:1)

try {
            JSONObject jsobj = new JSONObject("your string goes here");
            JSONObject ppobj = jsobj.getJSONObject("pp");
            String status_marital_pmg = ppobj.getString("status_marital_pmg");
            Integer usia_pmg = ppobj.getInt("usia_pmg");
        } catch (JSONException e) {
        }