JSON学习

  • Post author:
  • Post category:其他




JSON


概念


JavaScript Object Notation :JavaScript对象表示法(早期:在JavaScript中,用json来表示对象)

例:var p = {“name”:“张三”,“age”:“23”,“gender”:“男”};

json:现在多用于存储和交换文本信息的语法,类似于xml。进行数据传输,由于数据量比较小,比较有优势。


语法


1.基本规则

数据在名称/值对中:json数据是由键值对构成的键用引号(单双都行)引起来,也可以不使用引号。

值得取值类型:

1. 数字(整数或浮点数)

2. 字符串(在双引号中)

3. 逻辑值(true 或 false)

4. 数组(在方括号中) {“persons”:[{},{}]}(可以内含多个person)

5. 对象(在花括号中) {“address”:{“province”:“陕西”…}}

6. null

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

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

方括号保存数组:[]

定义格式:

这个代表的是一个键中它的值是一个数组,而该数组中,又是多个对象
在这里插入图片描述

这个代表的是一个数组,该数组里面有多个对象

在这里插入图片描述


获取对象


1.json对象.键名

2. json对象[“键名”]

例var name = persons[2][“name”];

4. 数组对象[索引]

5. 遍历

例:比如说我想获取下图王五的年龄

var age = persons.persons[2].age;这样就可以获取到该值了。

在这里插入图片描述

遍历测试:可以达到效果

在这里插入图片描述

数组遍历测试:也可以达到效果:

在这里插入图片描述



JSON数据和JAVA相互转换

在这里插入图片描述


JSON解析器


常见的解析器:Jsonlib,Gson,fastjson,jackson

jackson:springmvc内置的json解析器

1.使用步骤:

1.导入jackson的相关jar包

2.创建Jackson核心对象 ObjectMapper

3.调用ObjectMapper的相关方法进行转换

在web下面创建一个WEB-INF模块,然后再创建一个lib模块将jar包放入里面
在这里插入图片描述

放入jar包以后,还有将jar包加入到模块中,

在这里插入图片描述

1.JAVA转化成为JSON对象

有了json解析器的帮助java对象转换成为json数据就比较快了。

1.先创建一个Person类

2.写一个test类,创建一个Person对象并对其赋值,然后创建Jackson的核心对象,ObjectMapper,并调用其内部转换方法即可。

代码如下:

package cn.sainan114.test;

import cn.sainan114.domain.Person;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;

import java.io.File;
import java.io.FileWriter;

/**
 * FileName: Jsontest
 *
 * @Author:luguobao Date: 15:09
 * Description:
 * History:
 * <author>   <time>   <version>   <desc>
 * 作者姓名    修改时间    版本号       描述
 */
public class Jsontest {
    @Test
    public void test(){
        //1.创建Person对象
        Person p = new Person();
        p.setAge(22);
        p.setGender(false);
        p.setName("zhangsan");
        //2.创建Jackson的核心对象ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //转换
        /**
         * 转换方法writeValueAsString(obj):将对象转为json字符串
         * writeValue(参数1,obj)
         * 参数1:File:将obj对象转换为JSON,并保存到指定文件中
         *        Writer:将obj对象转化为JSON字符串,并将json数据填充到字符输出流
         *        OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
         */
        try {
            String json = mapper.writeValueAsString(p);
            //结果如下:{"name":"zhangsan","age":22,"gender":false}
            //System.out.println(json);
            mapper.writeValue(new File("d://a.txt"),p);
            mapper.writeValue(new FileWriter("d://b.txt"),p);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

结果如下:

在这里插入图片描述


注解


在java转换json的过程中,可以使用两个注解

1. @JsonIgnore:排除属性。

2. @JsonFormat:属性值得格式化

测试如下:

在类中加入一个实例变量,实现其get,set方法,在上面加入注解

在这里插入图片描述

新建test2(),并进行测试

在这里插入图片描述

结果如下:

在这里插入图片描述

@JsonFormat(pattern = “yyyy-MM-dd”)

pattern代表的是我们期望的样子

在这里插入图片描述

在这里插入图片描述

测试成功。


复杂的java对象转换


list集合:数组

map集合:和对象结果是一样的

其实对于list来说是一样的:

在这里插入图片描述

其输出结果是一个数组

在这里插入图片描述

用Map键值对

在这里插入图片描述


JSON转换为Java对象


1. 导入jackson的相关jar包

2. 创建Jackson核心对象 ObjectMapper

3. 调用ObjectMapper的相关方法进行转换

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

代码及结果如下:

在这里插入图片描述



版权声明:本文为weixin_46008168原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。