广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解Java-Jackson使用
  • 704
分享到

详解Java-Jackson使用

2024-04-02 19:04:59 704人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

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

序列化

序列化 (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使用详解的文章就介绍到这了,更多相关Java-Jackson使用详解内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解Java-Jackson使用

本文链接: https://www.lsjlt.com/news/122087.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Java-Jackson使用
    序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取...
    99+
    2022-11-11
  • Java之Jackson使用案例详解
    序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取...
    99+
    2022-11-12
  • 详解Jackson的基本用法
    目录一、前言二、Jackson的核心模块三、ObjectMapper的使用四、信息配置五、Jackson注解的使用六、Jackson示例6.1、Jackson ObjectMappe...
    99+
    2022-11-12
  • Java中如何使用Jackson
    这篇文章将为大家详细讲解有关Java中如何使用Jackson,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。序列化序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在...
    99+
    2023-06-14
  • Java利用Jackson序列化实现数据脱敏详解
    目录1.背景2.目标3.主要实现3.1基于Jackson的自定义脱敏序列化实现3.2定义脱敏接口、以及工厂实现3.3常用的脱敏器实现3.4注解定义3.5定义脱敏符号4.使用样例&am...
    99+
    2023-05-13
    Java Jackson序列化实现数据脱敏 Java Jackson序列化 Java 数据脱敏
  • Java之Jackson的基本使用案例讲解
    Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架。Jackson 社 区相对比较活跃,更新速度也比较快, 从 Github 中的统计来看...
    99+
    2022-11-12
  • Java中常用解析工具jackson及fastjson的使用
    一、maven安装jackson依赖 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/...
    99+
    2022-11-12
  • Jackson多态序列化图文详解
    目录场景Jackson多态类型序列化/反序列化实战总结场景 做一个消息中心,专门负责发送消息。消息分为几种渠道,包括手机通知(Push)、短信(SMS)、邮件(Email),Webs...
    99+
    2022-11-13
  • Jackson常用方法以及jacksonUtil工具类详解
    前言: 项目中我们通常使用ajax返回json数据格式的形式进行前后端数据交互,所以会用到java数据json数据互相转化,通常我们的做法是在项目中创建一个工具类进行转化处理。 如下...
    99+
    2022-11-12
  • 利用Jackson解析JSON的详细实现教程
    目录JSON 介绍Jackson 介绍Jackson Maven 依赖ObjectMapper 对象映射器Jackson JSON 基本操作Jackson JSON 序列化Jacks...
    99+
    2022-11-13
  • SpringBoot整合Jackson超详细用法
    目录一、Jackson简介二、Json简介三、springboot整合Jackson1.创建项目2.导入坐标3.配置文件4.实体类5.测试类一、Jackson简介 说明:本篇讲的是J...
    99+
    2023-03-23
    SpringBoot整合Jackson SpringBoot Jackson使用
  • Jackson之如何掌握Java JSON解析器
    本篇内容主要讲解“Jackson之如何掌握Java JSON解析器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Jackson之如何掌握Java JSON解析器...
    99+
    2022-10-19
  • java SpringSecurity使用详解
    目录SpringSecurity1、pom.xml简介1、pom.xml2、Security的controller3、路径转发的controller注销及权限控制1、导入依赖thym...
    99+
    2022-11-12
  • Java agent 使用详解
    一、前言 于一个即将上线的应用来说,系统监控是必不可少的,为什么需要监控呢?应用是跑在服务器上的,应用在运行过程中会发生各自意想不到的问题,像大家熟知的OOM,mysql故障,服务器宕机,程序500等等,因此为了能够第一时间掌握应用运行过...
    99+
    2023-10-04
    Java agent 使用详解 Java agent 使用 Java agent
  • JAVA中ResourceBundle使用详解
    ResourceBundle是Java中一个用来读取本地化资源的类。它可以根据不同的语言环境加载不同的资源文件,使得程序能够根据用户...
    99+
    2023-09-13
    Java
  • Java CompletableFuture的使用详解
    目录CompletableFuture​任务开启任务结束串行任务thenApply\thenApplyAsync 串行将异步结果进行同步\异步的处理handle\hand...
    99+
    2022-11-11
  • Java ThreadLocal的使用详解
    目录1. 应用场景1.1. 保障线程安全1.2. 显示传递参数2. 实现原理3. 注意事项ThreadLocal是线程私有的局部变量存储容器,可以理解成每个线程都有自己专属的存储容器...
    99+
    2022-11-12
  • Java Runtime的使用详解
    目录前言1. shutdownhook2. exec执行2.1 常规命令执行2.2 管道符2.3源码分析3. 总结前言 最近做项目框架,需要在框架结束的时候,关闭服务器连接,清除部分...
    99+
    2022-11-12
  • Java中使用MySQL详解
    1. 简介 在Java开发中,与数据库的交互是常见且重要的一部分。MySQL是一个广泛使用的关系型数据库管理系统,而Java作为一种强大的编程语言,提供了丰富的API和工具,使得与MySQL数据库的结...
    99+
    2023-09-13
    java mysql 开发语言
  • 使用Jackson反序列化遇到的问题及解决
    Jackson反序列化遇到的问题 最近在项目中需要使用Jackson把前台转来的字符转为对象,转换过程中发生了错误,报错如下 ​com.fasterxml.jackso...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作