JSON入门以及Jackson解析器使用

358 阅读2分钟

「这是我参与2022首次更文挑战的第26天,活动详情查看:2022首次更文挑战」。

前言

大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

本文主要介绍JSON的介绍和语法,以及一款JSON解析器Jackson的具体使用。

JSON

1. Json简介

JSON(JavaScript Object Notation)JavaScript对象表示法。Json是一种轻量级的文本数据交换格式,比XML更小,更快,更易解析。

2. Json语法

2.1 Json定义

JSON对象
{key1:value1,key2:value2 ...}

key都是字符串。key可以使用单引号或双引号括起来,也可以不使用引号。

value可以是以下类型:

  1. 数字类型
  2. 字符串类型
  3. 数组类型
  4. 对象类型
  5. 布尔类型
  6. null类型

【实例】

{
    name:"jack",
    age:20,
    list:[{name:"tom",age:34},{name:"Maria",age:30}],
    IsMan:true,
    description:{job:"teacher"},
    mate:null
}
JSON数组
[
    {key:value},
    {key:value},
    {key:value},
    ...
]

2.2 Json获取

简单对象获取

let p = {name:"jack",age:20}
  1. 通过(.)获取value

    let name = p.name
    
  2. 通过([])获取value

    let name = p["name"]
    

循环获取:

for(var key in p){
    alter(key);
    alter(p[key]);
}

需要注意的是,在上诉循环中获取的key只是字符串,所以要通过第二种方式获取value值。

对象数组获取:先获取到对象,再根据对象获取。

2.3 Json值的修改和删除

通过.进行修改,删除

p.name = "tom";
delete p.name;

通过[]修改,删除

p["name"] = "tom";
delete p["name"];

3. Json解析器——Jackson

Jack解析器使Json数据和对象之间可以相互转换,常见的Json有以下几种:

  1. Jsonlib
  2. Gson
  3. fastjson
  4. jackson

今天我们就来学习最后一个Json解析器Jackson,这是Spring框架中内置的JSON解析器。

3.1 将Java对象转化为JSON对象

首先导入Jackson的jar包。

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.12.3</version>
    </dependency>

然后创建ObjectMapper对象。

ObjectMapper mapper = new ObjectMapper();

转换方法:

  1. public String writeValueAsString(Object value)
    

    将java对象转化为JSON字符串

  1. public void writeValue(Writer w, Object value)
    

    将Java对象转化为JSON填充到字符输出流中。

  2. public void writeValue(OutputStream out, Object value)
    

    将Java对象转化为JSON填充到字节输出流中。

  3. public void writeValue(File resultFile, Object value)
    

    将Java对象转化为JSON写入到文件中。

3.2 将JSON对象转化为Java对象

转化方法:

public <T> T readValue(String content, Class<T> valueType)

【实例】

mapper.readValue(要转化的json字符串,Person.class);

小结

以上就是关于JSON数据格式的简单介绍和基本使用,以及JSON解析器Jackson的具体使用,希望能对读者有所帮助,如有不正之处,欢迎留言指正。