![01df931ad71c1547660d80338ee7885d.png](https://i-blog.csdnimg.cn/blog_migrate/d2da9f888d73e3f8ea27b4dc26a5415f.jpeg)
记得年前升级过一次fastjson,版本1.2.60,安全要求用到fastjson的全部升级,结果一扫一大片,用的人还真不少。许多使用springboot整体打包的同事,都是升级fastjson后重新打包,上传,重新发布应用。
小编所在部门相关springboot项目都进行了jar包分离(参见:如何分离构建业务jar,配置文件,第三方依赖jar),升级只是替换了一个fastjson的jar包,然后重启应用。可是这没过多久,安全再次要求升级fastjson了,这次改换使用jackson了,使用起来同样简单明了,性能差异也并不明显。
下面记录几个小编在项目中常用的场景:1.对象转json字符串ObjectMapper 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")
7.注解
jackson提供许多注解方便用户定制json转换,如@JsonIgnore转换时忽略此注解标注的属性,@JsonProperty转换时指定属性名称等。![51dd1890df1e1569b832c3c5aa4ede80.png](https://i-blog.csdnimg.cn/blog_migrate/4ea9986046468d3e897329a4b48763fa.png)