我正在调用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");
}
我在谷歌上搜索了很多,而且找不到任何解决方案。请帮帮我。
答案 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