Json入门学习笔记:json对象格式、用Gson和Fastjson解析json、以及向ieda导入Gson和Fastjson的jar包

JSON文件学习笔记

文章目录


json文件特性

json是一种轻量级的数据交换格式,相比较于xml文件,json文件具有占用空间更小,传输更快的优势。


一、json对象格式

一个对象由一个大括号表示,
括号中通过一个个键值对来描述对象的属性(可以理解为大括号中包含的一个个键值对)
格式:
键与值之间使用冒号连接,多个键值队之间用逗号分隔,
键值对的键应该用引号引用(通常java解析时,键不使用引号会报错,但是js能够正常解析)
键值对的值可以是js中任意类型的数据(也可以是数组)。
实例:
{
  “name”:“aaa”,
  “info”:“bbb”,
  “pengyou”:[“ccc”,“ddd”,{
      “name”:“zhangsan”,
      “age”:“23”
    }],
  “hh”:{
    “info”:“ddd”,
    “length”:“12m”
  }
}

二、json的解析

1.jar包的下载以及导入

由于JDK没有自带的jar解析工具,因此为了能够解析json文件,我们需要手动导入Gson和Fastjson的jar包。

首先前往github下载jar包
下载地址:
Gson:
https://github.com/google/gson.
Fastjson:
https://github.com/alibaba/fastjson
.

然后在idea的项目目录下创建lib文件夹,将刚才下载的文件加入其中:
Json入门学习笔记:json对象格式、用Gson和Fastjson解析json、以及向ieda导入Gson和Fastjson的jar包
选择File-Project Structure
Json入门学习笔记:json对象格式、用Gson和Fastjson解析json、以及向ieda导入Gson和Fastjson的jar包
在Libraries中添加jar包,点击ok导入成功。
Json入门学习笔记:json对象格式、用Gson和Fastjson解析json、以及向ieda导入Gson和Fastjson的jar包

2.谷歌的Gson使用使用方法

首先创建book类

public class Book {
    int id;
    String name;
    String info;

    public Book(int id, String name, String info) {
        this.id = id;
        this.name = name;
        this.info = info;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getInfo() {
        return info;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setInfo(String info) {
        this.info = info;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", info='" + info + '\'' +
                '}';
    }
}

将类转化为json

需要调用Gson类的toJson方法:

    public static void main(String[] args) {
        Gson g = new Gson();
        String json = g.toJson(new Book(10,"Jack","good man"));
        System.out.println(json);
    }

输出:
Json入门学习笔记:json对象格式、用Gson和Fastjson解析json、以及向ieda导入Gson和Fastjson的jar包

将json转化为类

Gson g = new Gson();
Book b1 = g.fromJson("{\"id\":10,\"name\":\"Jack\",\"info\":\"good man\"}",Book.class);
System.out.println(b1);

输出结果:
Json入门学习笔记:json对象格式、用Gson和Fastjson解析json、以及向ieda导入Gson和Fastjson的jar包

将json转化为集合

这里对该json文件进行转化:
Json入门学习笔记:json对象格式、用Gson和Fastjson解析json、以及向ieda导入Gson和Fastjson的jar包
代码如下:

Gson g = new Gson();
        HashMap data = g.fromJson("{\n" +
                "    \"name\":\"aaa\",\n" +
                "    \"info\":\"bbb\",\n" +
                "    \"pengyou\":[\"ccc\",\"ddd\",{\n" +
                "                        \"name\":\"zhangsan\",\n" +
                "                        \"age\":\"23\"\n" +
                "                        }],\n" +
                "    \"hh\":{\n" +
                "        \"info\":\"ddd\",\n" +
                "        \"length\":\"12m\"\n" +
                "        }\n" +
                "}",HashMap.class);
        //然后对其中的内容进行遍历
        for ( Object s: data.keySet()) {
            System.out.println(data.get(s));
        }

输出结果:
Json入门学习笔记:json对象格式、用Gson和Fastjson解析json、以及向ieda导入Gson和Fastjson的jar包

3.阿里的Fastjson使用方法

将类转化为json

使用静态方法toJSONString

String json = JSON.toJSONString(new Book(10, "Jack", "good man"));
System.out.println(json);

输出结果:
Json入门学习笔记:json对象格式、用Gson和Fastjson解析json、以及向ieda导入Gson和Fastjson的jar包

将json转化为类

使用静态方法parseObject
代码如下:

Book b = JSON.parseObject("{\"id\":10,\"info\":\"good man\",\"name\":\"Jack\"}",Book.class);
System.out.println(b);

输出如下:
Json入门学习笔记:json对象格式、用Gson和Fastjson解析json、以及向ieda导入Gson和Fastjson的jar包

将json转化为集合

使用静态方法parseObject,配合TypeReference使用。

 HashMap data = JSON.parseObject("{\n" +
                "    \"name\":\"aaa\",\n" +
                "    \"info\":\"bbb\",\n" +
                "    \"pengyou\":[\"ccc\",\"ddd\",{\n" +
                "                        \"name\":\"zhangsan\",\n" +
                "                        \"age\":\"23\"\n" +
                "                        }],\n" +
                "    \"hh\":{\n" +
                "        \"info\":\"ddd\",\n" +
                "        \"length\":\"12m\"\n" +
                "        }\n" +
                "}",new TypeReference<HashMap<String, String>>() {
        });
        for ( Object s: data.keySet()) {
            System.out.println(data.get(s));
        }
        

输出结果:Json入门学习笔记:json对象格式、用Gson和Fastjson解析json、以及向ieda导入Gson和Fastjson的jar包

4.java中json文件的读取和保存

在上面我们对json字符串进行了解析,然后将其转化为了自定义的类或者是集合,那么对于从外界得到的json文件我们应该怎么去读取,对于生成的json字符串我们应该怎么去写出?
。。。等待更新


总结

json文件在java的开发中使用频率很高,在开发时需要给别人回复json文件或者读取别人的json文件,因此要重点掌握json的使用。

上一篇:JSON.toJSONString中序列化空字符串遇到的坑


下一篇:fastjson工具类编写