Невозможно десериализовать ответ JSON в объекты Java - PullRequest
0 голосов
/ 23 октября 2018

Я знаю, что есть много запросов по этой теме, но мне ничего не помогло решить нижеприведенную проблему

    {
  "_embedded": {
    "customers": [
      {
        "id": 101,
        "name": "John",
        "city": "Ohio"
      },
      {
        "id": 102,
        "name": "Tom",
        "city": "London"
      }
    ]
  }
}

, для этого я создал ниже объекты Java:

@Data
public class Wrapper {
    @JsonProperty("_embedded")
    private Customers customer;
  }

@Data
public class Customers {
@JsonProperty("customer")
private List<Foo> obj;
}

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Foo{
    private int id;
    private String name;
    private String city;
    }

Любая помощь будет принята с благодарностью.

1 Ответ

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

У вас есть некоторые проблемы с именами в исходном вопросе, но, несмотря на это, вы можете структурировать свои классы в соответствии с JSON, чтобы было проще как для себя, так и для Gson.

Примерно так будет работать:

public class JsonWrapper {
    public Embedded _embedded;
}


public class Embedded {
    public Customers customers;
}


public class Customers extends ArrayList<Foo>{ }


public class Foo{
    public int id;
    public String name;
    public String city;
}


String json = "{\"_embedded\":{\"customers\":[{\"id\":101,\"name\":\"John\",\"city\":\"Ohio\"},{\"id\":102,\"name\":\"Tom\",\"city\":\"London\"}]}}";
JsonWrapper wrapper = new Gson().fromJson(json, JsonWrapper.class);
...