Переписать методы toString

290
27 июня 2017, 22:07

Покажется глупым, но я не понимаю как это сделать в данном случае, чтобы из одного класса передать в другой информацию, а потом начать с ней уже работать)

Есть такой Json

{
"success": true,
"data": [
    {
        "id": "1",
        "name": "АР Крым"
    },
    {
        "id": "2",
        "name": "Винницкая область"
    },

Парсится с помощью Jackson на 2 класса, Pojo и DataPojo

@JsonIgnoreProperties(ignoreUnknown=true)public class Pojo {
public Pojo(){}
private boolean success;
private List<Pojo> data;
@JsonProperty("data")
public List<Pojo> getDataPojo() {
    return data;
}
public void setDataPojo(List<Pojo> data) {
    this.data = data;
}
// getters & setters
@JsonProperty("success")
public boolean isSuccessPojo() {
    return success;
}
public void setSuccessPojo(boolean success) {
    this.success = success;
}
public String toString() {//???
}

DataPojo

public class DataPojo {
private String id, name;
// getters & setters
public String getIdDataPojo() {
    return id;
}
public void setIdDataPojo(String id) {
    this.id = id;
}
public String getNameDataPojo() {
    return name;
}
public void setNameDataPojo(String name) {
    this.name = name;
}
public String toString() {
    return this.name+this.id;//???
}

Ну и собствено хочу тут начать уже ее присваивать.

StringRequest request = new StringRequest(Request.Method.GET,regions, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.d(TAG,"login response"+ response);
            try {
                ObjectMapper mapper=new ObjectMapper();
                Pojo pojo=mapper.readValue(response,Pojo.class);
                System.out.println(pojo.toString());
            }catch (IOException e) {
                e.printStackTrace();
            }
Answer 1

Можно собственноручно написать метод toString в том виде, в каком вы хотите. Можно сгенерировать метод toString в среде разработки и подправить. IDE предложит список полей класса, которые необходимо включить в toString - поправьте результат, если он вас не устроит. Я скопировал ваш класс, сгенерировал автоматически и вот что у меня получилось:

@Override
public String toString() {
    return "Pojo{" +
            "success=" + success +
            ", data=" + data +
            '}';
}

Поскольку data это List, можно подправить вот так:

@Override
public String toString() {
    return "Pojo{" +
            "success=" + success +
            ", data=" + Arrays.toString(data.toArray()) +
            '}';
}

Если вывести на экран это System.out.println(pojo.toString());, то получится:

Pojo{success=true, data=[..., ..., ...]}

Можете манипулировать с этим, как хотите. Ваш класс по умолчанию наследуется от класса Object, и используя аннотацию @Override вы переопределяете дефолтный метод класса, тем самым, когда вы будете вызывать toString у любого объекта этого класса, результат будет таким, какой вы сделаете.

READ ALSO
почему newCondition не поддерживается для readLock

почему newCondition не поддерживается для readLock

В ReentrantReadWriteLock conditions не поддерживаются рид локомПочему?

167
Проблема отображения background в EDGE Windows 10 на JSP

Проблема отображения background в EDGE Windows 10 на JSP

всем приветделаю сайт на java

218
Заполненить 3 input а из одной кнопки

Заполненить 3 input а из одной кнопки

Прошлый раз задавал подобный вопрос на что участник этого сообщества , наш друг Igor дал верный ответ

205