Я использую дооснащение, и у меня есть такой класс контактов:
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.I Я не хочу получать часть данных, только ответ и сообщение
Моя модифицированная часть приложения полностью хороша и работает
Я использую модернизацию, чтобы получить этот json @AkshayKatariya
вы можете попробовать этот jsonschema2pojo.org, он принимает строку json в качестве входных данных и предоставит вам класс модели
помогите мне решить это @Fred
Вам нужно будет выполнить синтаксический анализ 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();
}
после запроса от метода модернизации onFailure возвращает мне. у меня нет ответа там
Тогда что-то не так с вашим кодом модернизации, вы должны получить этот JSON с сервера внутри onResponse .
Создайте класс 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 выше вы можете добавить другие данные, если хотите. чтобы избежать какого-либо конкретного свойства для сериализации и десериализации, вы можете использовать стратегия исключения.
Для получения дополнительной информации об этом вы можете перейти на здесь.
Ваш ответ хорош, но может быть случай, когда вам понадобятся эти поля из модели POJO, чтобы установить в них значение и использовать как Parcelable
я не понимаю @AkshayKatariya. не могли бы вы объяснить немного больше.
@AkshayKatariya для вашего вопроса просто нужно реализовать Serializable для Response.Class.
Если вы хотите избежать использования каких-либо данных ниже ключевого слова преходящий
и согласно приведенному выше классу 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 class ..
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;
}
}
Вам необходимо выполнить синтаксический анализ JSON, чтобы извлечь только соответствующие поля, ссылающиеся на tutorialspoint.com/android/android_json_parser.htm