Разбор нескольких массивов в Android - PullRequest
0 голосов
/ 09 октября 2018

Скажите, пожалуйста, как я могу разобрать эту модель, я более свежий в Android.я попытался так: -

{"error": false, "response": {"comdata": [{"id": "35", "address": "Address"}], "empdata ": [{" cid ":" 33 "," comid ":" 35 "," empname ":" test "," empdob ":" 0000-00-00 "}, {" cid ":" 33 ", "comid": "35", "empname": "test", "empdob": "0000-00-00"}]}

Gson gson = new Gson();
            String json = gson.toJson(result);
            JSONObject jObj = new JSONObject(json);
            if (jObj.getString("error").equalsIgnoreCase("false")) {
                JSONObject object = jObj.getJSONObject("response");
                for (int i = 0; i < object.length(); i++) {
                JSONArray jsonArray = object.getJSONArray("parentdata");
                    JSONObject jsonObject = jsonArray.getJSONObject(0);
                    //Something write here
                    JSONArray jsonArray1 = object.getJSONArray("childata");
                    for (int a = 0; a < jsonArray1.length(); a++) {
                        JSONObject object1 = jsonArray1.getJSONObject(a);
                      } return "true";
                    }return "true";
                   }else{
                          }

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Ваш JSON неверный, правильный JSON будет выглядеть следующим образом.

{
  "error": false,
  "response": {
    "comdata": [
      {
        "id": "35",
        "address": "Address"
      }
    ],
    "empdata": [
      {
        "cid": "33",
        "comid": "35",
        "empname": "test",
        "empdob": "0000-00-00"
      },
      {
        "cid": "33",
        "comid": "35",
        "empname": "test",
        "empdob": "0000-00-00"
      }
    ]
  }
}

Вы можете проанализировать JSON, используя следующий код.

 private void parseResponse(String result) {
        try {
            JSONObject jsonObject = new JSONObject(result);
            if (jsonObject.getBoolean("error")) {
                JSONObject response = jsonObject.getJSONObject("response");
                JSONArray jsonArray1 = response.getJSONArray("comdata");
                List<ComData> comdataList = new ArrayList<>();
                for (int i = 0; i < jsonArray1.length(); i++) {
                    ComData comData = new ComData();
                    comData.setId(jsonArray1.getJSONObject(i).getString("id"));
                    comData.setAddress(jsonArray1.getJSONObject(i).getString("address"));
                    comdataList.add(comData);

                }
                JSONArray jsonArray2 = response.getJSONArray("empdata");
                List<EmpData> empdataList = new ArrayList<>();
                for (int i = 0; i < jsonArray2.length(); i++) {
                    EmpData empData = new EmpData();
                    empData.setCid(jsonArray2.getJSONObject(i).getString("cid"));
                    empData.setComid(jsonArray2.getJSONObject(i).getString("comid"));
                    empData.setEmpname(jsonArray2.getJSONObject(i).getString("empname"));
                    empData.setEmpdob(jsonArray2.getJSONObject(i).getString("empdob"));
                    empdataList.add(empData);

                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

}

Или вы можете легко проанализировать JSON в POJO, используяGSON, см. ответ Сезара Феррейры .

0 голосов
/ 09 октября 2018

Ваш JSON недействителен, у вас должно быть что-то вроде этого:

{
    "error": false,
    "response": {
        "comdata": [{
            "id": "10",
            "username": null,
            "email": "example@gmail.com"
        }],
        "empdata": [{
            "eid": "33",
            "empname": "test",
            "empdob": "0000-00-00",
            "empgender": "test",
            "empphoto": ""
        }],
        "someData": [{
            "eid": "34",
            "empname": "test",
            "empdob": "0000-00-00",
            "empgender": "test",
            "empphoto": ""
        }]
    }
}

Свойство someData Я должен был добавить его, чтобы он был действительным JSON, я не знаю, подходит ли онваши требования.

Вы можете использовать jsonschematopojo для создания такого класса:

Класс Comdatum

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Comdatum {

@SerializedName("id")
@Expose
private String id;
@SerializedName("username")
@Expose
private Object username;
@SerializedName("email")
@Expose
private String email;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public Object getUsername() {
return username;
}

public void setUsername(Object username) {
this.username = username;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

}

Класс данных

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Data {

@SerializedName("error")
@Expose
private Boolean error;
@SerializedName("response")
@Expose
private Response response;

public Boolean getError() {
return error;
}

public void setError(Boolean error) {
this.error = error;
}

public Response getResponse() {
return response;
}

public void setResponse(Response response) {
this.response = response;
}

}

Класс Empdatum

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import package com.example;

public class Empdatum {

@SerializedName("eid")
@Expose
private String eid;
@SerializedName("empname")
@Expose
private String empname;
@SerializedName("empdob")
@Expose
private String empdob;
@SerializedName("empgender")
@Expose
private String empgender;
@SerializedName("empphoto")
@Expose
private String empphoto;

public String getEid() {
return eid;
}

public void setEid(String eid) {
this.eid = eid;
}

public String getEmpname() {
return empname;
}

public void setEmpname(String empname) {
this.empname = empname;
}

public String getEmpdob() {
return empdob;
}

public void setEmpdob(String empdob) {
this.empdob = empdob;
}

public String getEmpgender() {
return empgender;
}

public void setEmpgender(String empgender) {
this.empgender = empgender;
}

public String getEmpphoto() {
return empphoto;
}

public void setEmpphoto(String empphoto) {
this.empphoto = empphoto;
}

}

Пакет классов ответа com.example;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Response {

@SerializedName("comdata")
@Expose
private List<Comdatum> comdata = null;
@SerializedName("empdata")
@Expose
private List<Empdatum> empdata = null;
@SerializedName("someData")
@Expose
private List<SomeDatum> someData = null;

public List<Comdatum> getComdata() {
return comdata;
}

public void setComdata(List<Comdatum> comdata) {
this.comdata = comdata;
}

public List<Empdatum> getEmpdata() {
return empdata;
}

public void setEmpdata(List<Empdatum> empdata) {
this.empdata = empdata;
}

public List<SomeDatum> getSomeData() {
return someData;
}

public void setSomeData(List<SomeDatum> someData) {
this.someData = someData;
}

}

SomeDatum Class пакет com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class SomeDatum {

@SerializedName("eid")
@Expose
private String eid;
@SerializedName("empname")
@Expose
private String empname;
@SerializedName("empdob")
@Expose
private String empdob;
@SerializedName("empgender")
@Expose
private String empgender;
@SerializedName("empphoto")
@Expose
private String empphoto;

public String getEid() {
return eid;
}

public void setEid(String eid) {
this.eid = eid;
}

public String getEmpname() {
return empname;
}

public void setEmpname(String empname) {
this.empname = empname;
}

public String getEmpdob() {
return empdob;
}

public void setEmpdob(String empdob) {
this.empdob = empdob;
}

public String getEmpgender() {
return empgender;
}

public void setEmpgender(String empgender) {
this.empgender = empgender;
}

public String getEmpphoto() {
return empphoto;
}

public void setEmpphoto(String empphoto) {
this.empphoto = empphoto;
}

}

И тогда вы можете просто сделать что-то вроде этого:

String jsonString = "Your JSON String";
Gson converter = new Gson();
Data settingsdata = converter.fromJson(jsonString , Data.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...