记得年前升级过一次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转换时指定属性名称等。


©著作权归作者所有:来自51CTO博客作者mb5fdb0a4002420的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. MySQL基础: 预处理和常用的MySQL函数
  2. 非常简单的string驻留池,你对它真的了解吗
  3. 为什么要用内插字符串代替string.format
  4. 数据结构与算法专题——第四题 字符串相似度
  5. 第6章 0201-常用字符串函数介绍,学习心得、笔记(PHP常用字符串函数
  6. 0201-常用字符串函数
  7. 我的第21个代码
  8. PHP基础: 字符串函数
  9. 2021-02-17:规定1和A对应、2和B对应、3和C对应...26和Z对应,那么一

随机推荐

  1. php实现邮件自动发送之PHPMailer
  2. [请大家关注]有关PHP大型程序开发的方法!
  3. php中的gethostbyname函数有问题
  4. 如何解析命令行字符串来使用regex获取每
  5. 分叉开源PHP代码,项目类加载器策略
  6. 【CodeBase】PHP检查未知媒体文件的格式
  7. php 免费的快递查询接口快递100
  8. php导入导出excel表格
  9. 可以将Eclipse配置为防止某些警告出现在P
  10. 在ASP.NET和WordPress之间共享身份验证