鉴于这种反应:
{
"data": {
"id": 38943,
"title": "Appetere Platonem Tempor Interesset Natum",
"description": "epicuri alia atqui",
"visibility": "PUBLIC",
"picture_url": null,
"logo_picture": null,
"owner_id": 51065,
"created_at": "2021-08-16T05:59:15.325Z",
"updated_at": "2021-08-16T05:59:15.325Z",
"counts": {
"subscriptions": 0,
"spots": 0,
"comments": 0,
"impressions": 0,
"respots": 0,
"attachments": 0
},
"user": {
"id": 51065,
"name": "Jon",
"screen_name": "jon",
"url": null,
"location": null,
"profile_picture": null,
"picture_url": null,
"header_picture": null,
"about": null,
"counts": {
"maps": 26
}
},
"map_settings": {
"editor_access": [
"can_none.map",
"can_create.spots",
"can_create.events",
"can_create.comments",
"can_create.attachments",
"can_create.collaborators"
],
"visitor_access": [
"can_none.map",
"can_none.spots",
"can_none.events",
"can_create.comments",
"can_create.attachments",
"can_none.collaborators"
],
"respotting_to_this_map": false
}
},
"meta": {
"code": 200
}
}
我怎样才能将数据属性反序列化为像这样的 MapDTO
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class MapDTO {
private Integer id;
private String title;
private String description;
private String visibility;
@JsonAlias("picture_url")
private String pictureUrl;
@JsonAlias("logo_picture")
private String logoPicture;
@JsonAlias("owner_id")
private Integer ownerId;
@JsonAlias("created_at")
private String createdAt;
@JsonAlias("updated_at")
private String updatedAt;
private MapCountsDTO counts;
@JsonAlias("map_settings")
private MapSettingsDTO mapSettings;
}
我已经尝试使用自定义反序列化器,但是按名称获取所有属性,然后基于这些属性和嵌套对象创建一个新的MapDTO对象看起来很麻烦。如果结构发生变化,我必须更改反序列化器和DTO本身。让Jackson从给定的根开始进行反序列化会更容易。我使用Jackson 2.12.4到ResAs的4.4.0。我想避免创建不必要的包装类。
试试这个?https://json2csharp.com/json-to-pojo
// import com.fasterxml.jackson.databind.ObjectMapper; // version 2.11.1
// import com.fasterxml.jackson.annotation.JsonProperty; // version 2.11.1
/* ObjectMapper om = new ObjectMapper();
Root root = om.readValue(myJsonString), Root.class); */
public class Counts{
public int subscriptions;
public int spots;
public int comments;
public int impressions;
public int respots;
public int attachments;
public int maps;
}
public class User{
public int id;
public String name;
public String screen_name;
public Object url;
public Object location;
public Object profile_picture;
public Object picture_url;
public Object header_picture;
public Object about;
public Counts counts;
}
public class MapSettings{
public List<String> editor_access;
public List<String> visitor_access;
public boolean respotting_to_this_map;
}
public class Data{
public int id;
public String title;
public String description;
public String visibility;
public Object picture_url;
public Object logo_picture;
public int owner_id;
public Date created_at;
public Date updated_at;
public Counts counts;
public User user;
public MapSettings map_settings;
}
public class Meta{
public int code;
}
public class Root{
public Data data;
public Meta meta;
}
我需要反序列化以下json: 将它的< code>id属性设置为< code>foo_id json属性。 我需要在自定义反序列化程序中执行此操作。实现这一点最简单的方法是什么? 我想以某种方式将json“转换”为 然后将此委托给杰克逊。 在本例中,对象的类型为Foo,但其他对象可能不属于此类。另外,在本例中,json是一个数字,但如果它也是一个字符串,我希望支持。所以,我需要一种通用的方法来做到
问题内容: 使用Jackson 2,我正在寻找一种 通用的 方式将对象序列化为单个值(然后序列化它们,然后再填充该单个字段),而不必重复创建JsonSerializer / JsonDeserializer来处理每种情况。@JsonIdentityInfo批注非常接近,但由于我知道,它将始终对完整的子对象进行序列化,因此略微遗漏了该标记。 这是我想做的一个例子。给定的类: 我希望Order可以序列
给定一个JSON对象,它具有可变属性(例如标签),可以是原始值(例如字符串)或对象。假设的用例可以是标签多元化翻译的包装器: 或者 目标是使Jackson反序列化始终在Java端返回固定结构。因此,如果给定原语值,它总是转换为目标POJO的某个属性(例如其他),即: 目前,该问题通过使用自定义来解决,它检查属性是否为原语: 是否有一种更优雅的方法来处理可变JSON属性,而不需要在节点级别操作的解码
问题内容: 有没有一种方法可以通过杰克逊将xml(例如int)序列化为xml属性?我找不到任何特别的杰克逊或json批注(@XmlAttribute @ javax.xml.bind.annotation.XmlAttribute)来实现此目的。 例如 我想要的是: 但是我得到的是: 有没有一种方法来获取属性而不是元素?感谢帮助! 问题答案: 好吧,我找到了解决方案。 如果您使用jackson-d
有人能帮助我,我如何反序列化下面的JSON,我不能改变?我正在使用Jackson进行序列化。 列可以具有未知数量的标题及其值,例如,“Header1”用于行数组中。 到目前为止,我有以下结构: 问题是当我反序列化成QueryResult时映射是空的;我了解TypeReference,但不知道如何指定TypeReference 编辑: 我的对象映射器代码如下: queryResultString的内
有没有办法将一般对象序列化为Json并将Json反序列化为对象<如果对象是一个实体,我可以使用Jackson 2库来实现这个目的<但是如果对象是一个普通类,我该怎么做呢? 例如,我想序列化com.datastax.driver.core.querybuilder。将更新为Json并保存到DB,然后搜索并反序列化它以更新对象,最后将其用作com.datastax.driver.core.Sessio