jackson学习之二:jackson-core

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

系列文章汇总

jackson学习之一:基本信息

jackson学习之二:jackson-core

jackson学习之三:常用API操作

jackson学习之四:WRAP_ROOT_VALUE(root对象)

jackson学习之五:JsonInclude注解

jackson学习之六:常用类注解

jackson学习之七:常用Field注解

jackson学习之八:常用方法注解

jackson学习之九:springboot整合(配置文件)

jackson学习之十(终篇):springboot整合(配置类)

关于jackson-core

本文主要内容是jackson-core库,这是个低阶API库,提供流式解析工具JsonParser,流式生成工具JsonGenerator;

在日常的序列化和反序列化处理中,最常用的是jackson-annotations和jackson-databind,而jackson-core由于它提供的API过于基础,我们大多数情况下是用不上的;

尽管jackson-databind负责序列化和反序列化处理,但它的底层实现是调用了jackson-core的API;

本着万丈高楼平地起的原则,本文咱们通过实战了解神秘的jackson-core,了解整个jackson的序列化和反序列化基本原理;

源码下载

如果您不想编码,可以在GitHub下载所有源码,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos):

名称 链接 备注
项目主页   https://github.com/zq2599/blog_demos   该项目在GitHub上的主页  
git仓库地址(https)   https://github.com/zq2599/blog_demos.git   该项目源码的仓库地址,https协议  
git仓库地址(ssh)   git@github.com:zq2599/blog_demos.git   该项目源码的仓库地址,ssh协议  

这个git项目中有多个文件夹,本章的应用在jacksondemo文件夹下,如下图红框所示:

在这里插入图片描述

创建父子工程

创建名为jacksondemo的maven工程,这是个父子结构的工程,其pom.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <properties> <java.version>1.8</java.version> </properties> <groupId>com.bolingcavalry</groupId> <artifactId>jacksondemo</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>core</module> <module>beans</module> <module>databind</module> </modules> <dependencyManagement> <dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> <scope>compile</scope> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.7</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.10</version> <scope>compile</scope> </dependency> </dependencies> </dependencyManagement> </project> 新增子工程beans

在父工程jscksondemo下新增名为beans的子工程,这里面是一些常量和Pojo类;

增加定义常量的类Constant.java:

package com.bolingcavalry.jacksondemo.beans; public class Constant { /** * 该字符串的值是个网络地址,该地址对应的内容是个JSON */ public final static String TEST_JSON_DATA_URL = "https://raw.githubusercontent.com/zq2599/blog_demos/master/files/twitteer_message.json"; /** * 用来验证反序列化的JSON字符串 */ public final static String TEST_JSON_STR = "{\n" + " \"id\":1125687077,\n" + " \"text\":\"@stroughtonsmith You need to add a \\\"Favourites\\\" tab to TC/iPhone. Like what TwitterFon did. I can't WAIT for your Twitter App!! :) Any ETA?\",\n" + " \"fromUserId\":855523, \n" + " \"toUserId\":815309,\n" + " \"languageCode\":\"en\"\n" + "}"; /** * 用来验证序列化的TwitterEntry实例 */ public final static TwitterEntry TEST_OBJECT = new TwitterEntry(); /** * 准备好TEST_OBJECT对象的各个参数 */ static { TEST_OBJECT.setId(123456L); TEST_OBJECT.setFromUserId(101); TEST_OBJECT.setToUserId(102); TEST_OBJECT.setText("this is a message for serializer test"); TEST_OBJECT.setLanguageCode("zh"); }}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsswws.html