Jackson笔记

1. 引言

Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。
Jackson主要有三种方式处理JSON:

  1. 数据绑定,它有两个类型,简单的数据绑定可以将JSON与Java Maps, Lists, Strings, Numbers, Booleans,null进行转换。全部数据绑定可以将JSON与任意JAVA类型转换。通过ObjectMapper类读/写JSON。数据绑定是最方便的方式是类似XML的JAXB解析器。
  2. 流式API,读取并将JSON内容写入作为离散事件。 JsonParser读取数据,而JsonGenerator写入数据。它是三者中最有效的方法,是最低的开销和最快的读/写操作。它类似于Stax解析器XML。
  3. 树模型,将JSON文件在内存里以树形式表示, ObjectMapper构建JsonNode节点树,这是最灵活的方法,它类似于XML的DOM解析器。

2. ObjectMapper类

需要记住的大致过程事首先创建ObjectMapper类,readValue()方法可以实现从json文件到实例的反序列化过程,writeValueAsString()方法可以实现从实例到json文件的序列化过程。需要注意的是Mapper实例是完全线程安全的,前提是实例的所有配置都发生在任何读或写调用之前。

public class JacksonTester {
   public static void main(String args[]){
      ObjectMapper mapper = new ObjectMapper();
      String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";

      //map json to student
      try {
         //将json字符串反序列化为对象实例
         Student student = mapper.readValue(jsonString, Student.class);
         System.out.println(student);
         //格式化输出字符串
         mapper.enable(SerializationConfig.Feature.INDENT_OUTPUT);
         //将实例序列化为字符串
         jsonString = mapper.writeValueAsString(student);
         System.out.println(jsonString);

      } catch (JsonParseException e) {
         e.printStackTrace();
      } catch (JsonMappingException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }

   //将对象实例序列化为json文件
   private void writeJSON(Student student) throws JsonGenerationException, JsonMappingException, IOException{
      ObjectMapper mapper = new ObjectMapper();	
      mapper.writeValue(new File("student.json"), student);
   }

   //将json文件反序列化为对象实例
   private Student readJSON() throws JsonParseException, JsonMappingException, IOException{
      ObjectMapper mapper = new ObjectMapper();
      Student student = mapper.readValue(new File("student.json"), Student.class);
      return student;
   }
}

class Student {
   private String name;
   private int age;
   public Student(){}
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
   public String toString(){
      return "Student [ name: "+name+", age: "+ age+ " ]";
   }	
}

后续跟新中

参考易百教程https://www.yiibai.com/jackson/jackson_objectmapper.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值