我有一条詹森弦像:
{
"name": "abc",
"type": "type1",
"artist": {
"name": "ally"
},
"other_part": "{\"id\":\"ee50abd7\",\"metadata\":"...\"}"
}
如您所见,“other_part”看起来像是宽松的格式。它以引号表示。
这里,我只想把它转换成一个POJO类。但是other_part给出了解析错误。有什么建议吗?
POJO类:
class Data
{
private String name;
private String type;
private Artist artist;
private Other other_part;
...getters
}
class Artist
{
private String name;
...getters
}
class Other
{
private String id;
private String metadata;
...getters
}
和其他模板:
restTemplate.exchange(requestEntity, Data.class);
错误:
(尽管至少存在一个创建者):没有要从字符串值反序列化的字符串参数构造函数/工厂方法...
谢谢大家用JsonDeserialize解决了问题:
public static class OtherConverter extends StdConverter<String, Other>
{
@Override
public Other convert(String value)
{
return new Gson().fromJson(value, Other.class);
}
}
class Data
{
private String name;
private String type;
private Artist artist;
@JsonDeserialize( converter = OtherConverter.class )
private Other other_part;
...getters
}
3条答案
按热度按时间lztngnrs1#
您可能需要创建自定义反序列化程序。
在自定义序列化程序中,您将收到字符串信息。然后,您可以使用所选的库来转换此字符串。
示例:https://www.tutorialspoint.com/jackson_annotations/jackson_annotations_jsondeserialize.htm
vulvrdjw2#
您是否尝试为类提供Setters和空构造函数,以便序列化Jackson(Spring中的默认数据序列化器),据我所知需要此构造函数。
6ojccjat3#
看起来other_part只是一个字符串值,而不是JSON对象。
如果没有办法更改输入,那么我建议您为otherPart字段创建自定义的setter/parser: