Android Jackson Mapping异常

时间:2017-06-22 08:42:24

标签: java android jackson

我正在调用API,因此我能够获得Json响应。在这个json中,我有一个参数例如 manufacturer,其中我希望有一个Manufacturer类型的对象(我的自定义类),但有时我从字符串中获取String将相同的命名参数放入API中,由于这个原因,我可以得到以下异常:

com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class com.response.Manufacturer] from String value ('59438a9f2e4ab8c26656fcfd'); no single-String constructor/factory.

我得到的Api回应就像:

{"manufacturer" : "59438a9f2e4ab8c26656fcfd"}

有时这个回应就像

{"manufacturer" : {"name":"Manufacturer Name"}}

我的制造商类就像

class Manufacturer {
 @JsonProperty("name")
 private String name;
  // getter and setter for this with @JsonProperty("name");
 }

我在谷歌上搜索了很多,而且找不到任何解决方案。请帮帮我。

1 个答案:

答案 0 :(得分:0)

你可以在String中放置一个带有Manufacturer参数的构造函数,当Jackson看到JSON中的字符串字段并且必须在Java类中创建Manufacturer字段时,它将使用该参数: / p>

class Manufacturer {
    Manufacturer(String id) {
        this.name = // initialize as you see fit
    }

    Manufacturer() {} // compiler no longer creates this