Jackson,проблема с парсингом

302
04 июля 2017, 21:07

Есть такой Json

{
"success": true,
"data": {
    "make": "[{\"id\":3,\"name\":\"Replay\"},{\"id\":4,\"name\":\"Replica\"},{\"id\":2,\"name\":\"Vianor\"},{\"id\":5,\"name\":\"Kosei\"},{\"id\":12,\"name\":\"Invader\"},{\"id\":8,\"name\":\"MANSORY\"},{\"id\":13,\"name\":\"RAYS\"},{\"id\":14,\"name\":\"VISSOL\"}]"

Мои Pojo-классы выглядят следующим образом.

public class Pojo_Params {
private Boolean success;
private String data;
private List<Pojo_Params_Data> make;
public Boolean getSuccess() {
    return success;
}
public void setSuccess(Boolean success) {
    this.success = success;
}
public String getData() {
    return data;
}
public void setData(String data) {
    this.data = data;
}

public List<Pojo_Params_Data> getMake() {
    return make;
}
public void setMake(List<Pojo_Params_Data> make) {
    this.make = make;
}
@Override
public String toString() {
    return Arrays.toString(make.toArray());
}

и

public class Pojo_Params_Data {
private String id,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;
}
@Override
public String toString() {
    return name + "="+ id;
}

"make" - это ведь список? Выдает такую ошибку W/System.err: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token

Answer 1

У вас неверно сформированы классы. make - не список, а строка.

Вот верный вариант:

public class MyPojo
{
    private Data data;
    private String success;
    public Data getData ()
    {
        return data;
    }
    public void setData (Data data)
    {
        this.data = data;
    }
    public String getSuccess ()
    {
        return success;
    }
    public void setSuccess (String success)
    {
        this.success = success;
    }
    @Override
    public String toString()
    {
        return "ClassPojo [data = "+data+", success = "+success+"]";
    }
}

public class Data
{
    private String make;
    public String getMake ()
    {
        return make;
    }
    public void setMake (String make)
    {
        this.make = make;
    }
    @Override
    public String toString()
    {
        return "ClassPojo [make = "+make+"]";
    }
}
READ ALSO
Exception in thread &ldquo;main&rdquo; java.sql.SQLException: Исключение ввода/вывода: The Network Adapter could not establish the connection

Exception in thread “main” java.sql.SQLException: Исключение ввода/вывода: The Network Adapter could not establish the connection

Добрый день! При использовании драйвера возникает эксепшн Exception in thread "main" javasql

300
apache.poi.HSSF

apache.poi.HSSF

Есть некий excel(xls) документ

311
Не могу разобраться с yandex money android api

Не могу разобраться с yandex money android api

Я зарегистрировал приложение в yandexmoney, получил id клиента

267