文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中如何使用Jackson

2023-06-14 07:26

关注

这篇文章将为大家详细讲解有关Java中如何使用Jackson,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

序列化

序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

Json是什么?

Jason是 JavaScript Object Notation— JavaScript对象表示法,是一种轻量级数据交换格式。主要用于数据传输,比如说在后端写了一个Java对象,想在其他地方(前端)使用这个对象,就需要转换为Json这种形式进行传输。

1.基本规则

数据在名称/值对中:json数据是由键值对构成的

值用引号引起来,也可以不使用引号

值的取值类型: 数字、字符串、布尔值、数组(如{"persons":[{},{},{}]})、对象、null

数据用逗号分隔:多个键值对由逗号分隔

方括号保存数组:[]

花括号保存对象:使用{}定义json格式

2.获取数据

json对象.键名

json对象["键名"]

数组对象[索引]

遍历

3.用途

以某种存储形式使自定义对象持久化;

将对象从一个地方传递到另一个地方。

使程序更具维护性。

Jackson

Java生态圈中有很多处理JSON和XML格式化的类库, 常见的解析器:Jsonlib,Gson,fastjson,Jackson。Jackson是其中比较著名的一个,也比较方便。,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的JSON操作方法。

1.导入Jar包

2.Json注解

@JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。

@JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。

@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。

public class Person {   private String name;  private int age;   @JsonProperty("gender")  private String gender;   // @JsonIgnore//忽略该属性,不进行转换  @JsonFormat(pattern = "yyyy-MM-dd")  private Date birthday;   public Date getBirthday() {    return birthday;  }   public void setBirthday(Date birthday) {    this.birthday = birthday;  }   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 getGender() {    return gender;  }   public void setGender(String gender) {    this.gender = gender;  }   @Override  public String toString() {    return "Person{" +        "name='" + name + '\'' +        ", age=" + age +        ", gender='" + gender + '\'' +        '}';  }}

3.Json转为Java对象

导入Jackson的相关jar包

创建Jackson的核心对象,ObjectMapper

调用ObjectMapper的相关方法进行数据转换——将Json字符串转换为Java对象

readValue(json字符串数据,类.Class)

//将Json字符串转为Java对象  @Test  public void test5() throws Exception{    //json字符串    String str="{\"gender\":\"男\",\"name\":\"zhangsan\",\"age\":23}";    //Jackson核心对象    ObjectMapper mapper = new ObjectMapper();    //使用readValue方法进行转换    Person person = mapper.readValue(str, Person.class);    System.out.println(person);  }

4.Java对象转换Json

导入Jackson的相关jar包

创建Jackson的核心对象,ObjectMapper

调用ObjectMapper的相关方法进行数据转换——将Java对象转换为Json

writeValue(参数,obj对象)

参数:File:将obj对象转换为JSON字符串,并保存到指定的文件中

参数:Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中

参数:OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中

writeValueAsString(obj):将对象转为json字符串(常用)

 //Java对象转Json  @Test  public void test1() throws IOException {     //1.创建Java对象    Person p=new Person();    p.setName("张三");    p.setAge(23);    p.setGender("男");     //2.创建Jackson对象 ObjectMapper    ObjectMapper mapper=new ObjectMapper();    //3.转换为JSOn    String json = mapper.writeValueAsString(p);    System.out.println(json);    mapper.writeValue(new File("d:\\jaon.txt"),json);    mapper.writeValue(new FileWriter("d:\\json.txt"),json);  }    @Test  public void test2() throws JsonProcessingException {     //1.创建Java对象    Person p = new Person();    p.setName("张三");    p.setAge(23);    p.setGender("男");    p.setBirthday(new Date());    //2.创建Jackson对象 ObjectMapper    ObjectMapper mapper = new ObjectMapper();    //3.转换为JSOn    String json = mapper.writeValueAsString(p);    System.out.println(json);  }    @Test  public void test3() throws Exception {    //复杂格式的转换:list    //1.创建Java对象    Person p1 = new Person();    p1.setName("张三");    p1.setAge(23);    p1.setGender("男");    p1.setBirthday(new Date());     Person p2 = new Person();    p2.setName("张三");    p2.setAge(23);    p2.setGender("男");    p2.setBirthday(new Date());     List<Person> list=new ArrayList<>();    list.add(p1);    list.add(p1);      //2.创建Jackson对象 ObjectMapper    ObjectMapper mapper = new ObjectMapper();    //3.转换为JSOn    String json = mapper.writeValueAsString(list);    System.out.println(json);//[{"name":"张三","age":23,"gender":"男","birthday":"2021-03-19"},{"name":"张三","age":23,"gender":"男","birthday":"2021-03-19"}]   }   @Test  public void  test4() throws Exception{    //复杂格式的转换Map    //1.创建map对象    Map<String,Object> map=new HashMap<>();    map.put("name","zhangsan");    map.put("age",23);    map.put("gender","男");    //2.创建Jackson对象 ObjectMapper    ObjectMapper mapper = new ObjectMapper();    //3.转换为JSOn    String json = mapper.writeValueAsString(map);    System.out.println(json);//{"gender":"男","name":"zhangsan","age":23}  }

关于“Java中如何使用Jackson”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯