java中使用Jackson代替fastjson进行序列化处理

方法详解
这里会列出常用方法的详解,更多方法可查阅jackson api文档

ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构

对象转json字符串
ObjectMapper 通过 writeValue 系列方法将 java 对象序列化为 json,并将 json 存储成不同的格式:String(writeValueAsString)、Byte Array(writeValueAsBytes)、Writer、File、OutStream、DataOutput。
ObjectMapper objectMapper = new ObjectMapper();构造ObjectMapper对象

objectMapper.writeValue(参数,obj);
//参数解析:
//File: 将对象转为json字符串,保存到指定的文件中
//Writer: 将对象转为json字符串,并将json数据填充到字符输出流中
// outputStream: 将对象转为json字符串,并将json数据填充到字节输出流中

objectMapper.writeValueAsString(obj)//将对象转为json字符

objectMapper.writeValueAsBytes(obj)//将对象转为json字符(byte数据格式)

SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd”);
objectMapper.setDateFormat(dateFormat);//支持时间转换成格式化的字符串

字符串转对象
ObjectMapper 通过 readValue 系列方法从不同的数据源: String、Byte Array、Reader、File、URL、InputStream 中反序列化为 java 对象。

Obj obj = objectMapper.readValue(参数, Obj.class);//json转对象
//参数可以是String,Reader,URL,File,InputStream ,Byte

json Tree模型
JsonNode 抽象类
ObjectNode 继承 JsonNode,可代替fastjson的JSONObject
ArrayNode 继承 JsonNode,可代替fastjson的JSONArray
JsonNode对象是不可变的,所以不能直接构建JsonNode实例的对象图,可以通过创建JsonNode 的子类ObjectNode实例的对象图

// JsonNode 对象
JsonNode jsonNode = objectMapper.readTree(json);

//ObjectNode对象
ObjectNode objectNode = objectMapper.createObjectNode();
objectNode.put(" “,” “);
objectNode.remove(” ");

//ObjectNode对象
ArrayNode arraynode = mapper.createArrayNode();

常用注解
@JsonIgnore 作用域属性或方法上
@JsonIgnore 用来告诉 Jackson 在序列化/反序列化时忽略该注解标注的 java pojo 属性
@JsonIgnore
private String name;

@JsonIgnoreProperties 作用在类上
@JsonIgnoreProperties 和 @JsonIgnore 的作用相同,都是告诉 Jackson 该忽略哪些属性,
不同之处是 @JsonIgnoreProperties 是类级别的,并且可以同时指定多个属性。
@JsonIgnoreProperties(value = {"字段1","字段2"})
public class Xxxx{。。。}

@JsonIgnoreType
@JsonIgnoreType 标注在类上,当其他类有该类作为属性时,该属性将被忽略
@JsonIgnoreType
public class Xxxx{。。。}

@JsonProperty
@JsonProperty 可以指定某个属性和json映射的名称。例如我们有个json字符串为{“user_name”:”xxxx”},
而java中命名要遵循驼峰规则,则为userName,这时通过@JsonProperty 注解来指定两者的映射规则即可。这个注解也比较常用。
@JsonProperty("user_name")
private String userName;
1
2
@JsonInclude
在将 java pojo 对象序列化成为 json 字符串时,使用 @JsonInclude 注解可以控制在哪些情况下才将被注解的属性转换成 json,例如只有属性不为 null 时。
@JsonInclude(JsonInclude.Include.NON_NULL)
private String username;

常用用法:
JsonJsonInclude.Include.ALWAYS 这个是默认策略,任何情况下都序列化该字段,和不写这个注解是一样的效果。
JsonJsonInclude.Include.NON_NULL 这个最常用,即如果加该注解的字段为null,那么就不序列化这个字段了。
JsonJsonInclude.Include.NON_ABSENT 这个包含NON_NULL,即为null的时候不序列化
JsonJsonInclude.Include.NON_DEFAULT 如果字段是默认值的话就不序列化。

posted @   abowu  阅读(74)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示