сделать JSON Pojo из массива без индекса - PullRequest
0 голосов
/ 25 апреля 2018

Я использую модификацию, и у меня есть класс контактов, подобный этому:

public class MyContact {

    private String response;
    private String message;

    private Map<String, Object> additionalProperties = new HashMap<String, Object>();

    public String getResponse() {
        return response;
    }

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

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Map<String, Object> getAdditionalProperties() {
        return this.additionalProperties;
    }

    public void setAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
    }

}

, и есть часть моего json:

{"Response":"Success","Message":"YES","Data":{"Info":{"id":"1" , "name":"leon"}}}

Яиспользуя модификацию, чтобы получить это JSON

Вопрос в том, как управлять этим с помощью pojo в android. Я не хочу получать 'Data' part, просто 'response' и 'message'

Моя часть приложения полностью обновлена ​​и работает

Ответы [ 3 ]

0 голосов
/ 25 апреля 2018

Создайте класс Serializable -

class Response implements Serializable{
    @SerializedName("Response")
    private String response;
    @SerializedName("Message")
    private String message;

    public Response(){}

    public Response(String response, String message){
        this.message = message;
        this.response = response;
    }

    //todo getter and setter methods
}

Теперь анализируйте данные JSON с помощью Gson.

String jsonString = "{\"Response\":\"Success\",\"Message\":\"YES\",\"Data\":{\"Info\":{\"id\":\"1\" , \"name":\"leon\"}}}";
Response responseObject = new Gson()
                          .fromJson(
                             jsonString,
                             Response.class
                          );

в этомКласс POJO выше, вы можете добавить другие данные, если хотите.чтобы избежать какого-либо конкретного свойства для сериализации и десериализации, вы можете использовать стратегия исключения .

Для получения дополнительной информации по этому вопросу вы можете перейти здесь .

0 голосов
/ 25 апреля 2018

Если вы хотите избежать любых данных, используемых ниже, ключевое слово transient

и в соответствии с приведенным выше классом json pojo будет таким:

public class Data {

@SerializedName("Info")
private Info info;

public Info getInfo() {
    return info;
}

public void setInfo(Info info) {
    this.info = info;
}

}

public class Info {

@SerializedName("id")
private String id;
@SerializedName("name")
private String name;

public String getId() {
    return id;
}

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

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}

затем окончательный ответ pojo класс ..

public class ResponseData {

@SerializedName("Response")
private String response;
@SerializedName("Message")
private String message;
@SerializedName("Data")
transient 
private Data data;

public String getResponse() {
    return response;
}

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

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

public Data getData() {
    return data;
}

public void setData(Data data) {
    this.data = data;
}

}

0 голосов
/ 25 апреля 2018

Вам нужно будет выполнить JSON-разбор вот так

String res = "{\"Response\":\"Success\",\"Message\":\"YES\",\"Data\":{\"Info\":{\"id\":\"1\" , \"name\":\"leon\"}}}";

MyContact model =new MyContact();

if (res!=null);//Retrofit response 
    try
    {
        JSONObject jo = new JSONObject(res);
        model.setResponse(jo.optString("Response"));
        model.setMessage(jo.optString("Message"));

        Log.d("Akshay","Response = "+model.getResponse() + " " +model.getMessage());
    }
    catch (JSONException e)
    {
        e.printStackTrace();
    }
...