我有问题反序列化嵌套的json数据.我使用Ormlite来保存数据,并使用Spring/Jackson(2)的组合来获取数据.ForeignCollection在Ormlite将其保留之前,对象的集合/列表必须是接口.我读过其他几个职位#1(1,2,3),但其中的非有一个明确的解决方案.
这是我的一些代码:
@ForeignCollectionField(eager = true)
@JsonProperty("images")
private ForeignCollection<Image> images;
Run Code Online (Sandbox Code Playgroud)
我试过@JsonDeserialize(as=BaseForeignCollection.class)没有任何运气.更改ForeignCollection为Collection将使杰克逊高兴并解析数据,但随后它将无法访问数据库.
有任何想法吗?
我有以下JSON:
{
fields : {
"foo" : "foovalue",
"bar" : "barvalue"
}
}
Run Code Online (Sandbox Code Playgroud)
我写了一个pojo如下:
public class MyPojo {
@JsonProperty("fields")
private List<Field> fields;
static class Field {
@JsonProperty("foo") private String foo;
@JsonProperty("bar") private String bar;
//Getters and setters for those 2
}
Run Code Online (Sandbox Code Playgroud)
这显然会失败,因为我的json字段"fields"是一个hashmap,而不是一个列表.
我的问题是:是否有任何"魔术"注释可以使杰克逊将地图键识别为pojo属性名称,并将地图值分配给pojo属性值?
PS:我真的不想让我的田野对象......
private Map<String, String> fields;
Run Code Online (Sandbox Code Playgroud)
...因为在我的真实世界json中,我在地图值中有复杂的对象,而不仅仅是字符串......
谢谢 ;-)
菲利普
我正在为我的应用程序使用 Spring Data Rest。当我执行后调用时。我收到错误
输入有效负载语法:-
{
"id": 0,
"name": "string",
"sortedWeightedSources": {
"empty": true
},
"status": "ACTIVE",
"weightedSources": [
{
"sources": {
"accountNumber": "string",
"active": true,
"configuration": "string",
"id": 0,
"name": "string"
},
"rate": 0,
"id": 0,
"status": "ACTIVE",
"weight": 0
}
]
}
Run Code Online (Sandbox Code Playgroud)
要求:-
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/hal+json' -d '{ \
"name": "string" \
}' 'http://localhost:8082/model1'
Run Code Online (Sandbox Code Playgroud)
错误:-
{
"cause": {
"cause": {
"cause": null,
"message": "Can not find a deserializer for non-concrete Collection type …Run Code Online (Sandbox Code Playgroud)