弃掉fastjson,改回jackson

记得年前升级过一次fastjson,版本1.2.60,安全要求用到fastjson的全部升级,结果一扫一大片,用的人还真不少。许多使用springboot整体打包的同事,都是升级fastjson后重新打包,上传,重新发布应用。

小编所在部门相关springboot项目都进行了jar包分离(参见:如何分离构建业务jar,配置文件,第三方依赖jar),升级只是替换了一个fastjson的jar包,然后重启应用。可是这没过多久,安全再次要求升级fastjson了,这次改换使用jackson了,使用起来同样简单明了,性能差异也并不明显。

下面记录几个小编在项目中常用的场景:

1.对象转json字符串

javaObjectMapper mapper = new ObjectMapper();
String jsonPerson = mapper.writeValueAsString(new Person("码农小麦",25));
System.out.println(jsonPerson);
#结果:{"name":"码农小麦","age":25,"birthday":"2000-06-01 00:00:00"}

2.json字符串转对象

Person person = mapper.readValue(jsonPerson,Person.class);
System.out.println(person);
#结果:Person{name='码农小麦',age=25,birthday=Thur June 01 00:00:00 CST 2000}

3.直接构建json字符串

JsonNodeFactory jsonNodeFactory = JsonNodeFactory.instance;
ObjectNode objectNode = jsonNodeFactory.objectNode();
objectNode.put("name","码农小麦");
objectNode.put("age",25);
System.out.println(objectNode.toString());

4.直接解析json字符串

JsonNode jsonNode = mapper.readTree(objectNode.toString());
System.out.println(String.format("name: %s, age: %d",
        jsonNode.get("name").asText(),jsonNode.get("age").asInt(0)));

5.使用json数组

ObjectNode resultNode = jsonNodeFactory.objectNode();
resultNode.put("code",200);
ArrayNode arrayNode = resultNode.putArray("data");
ObjectNode dataNode = jsonNodeFactory.objectNode();
dataNode.put("name","码农小麦1");
dataNode.put("age",25);
arrayNode.insert(1,dataNode);
ObjectNode dataNode1 = jsonNodeFactory.objectNode();
dataNode1.put("name","码农小麦2");
dataNode1.put("age",25);
arrayNode.insert(2,dataNode1);
System.out.println(resultNode.toString());
#结果:{"code":200,"data":[{"name":"码农小麦1","age":25},
             {"name":"码农小麦2","age":25}]}

6.日期转换

默认转换为json字符串会将对象日期转换为Long型的毫秒数,可以使用注解进行格式化。

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

接口间传输日期,最好还是使用Long型毫秒数,前后端转换都很方便。

7.注解
jackson提供许多注解方便用户定制json转换,如@JsonIgnore转换时忽略此注解标注的属性,@JsonProperty转换时指定属性名称等。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小麦

一起学习共同进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值