JSON解析

一.JSON介绍
JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.

对象格式:

XML:
<book>
	<name>金苹果</name>
	<info>种苹果</info>
</book>

JSON:
{
	"name":"金苹果",
	"info":"种苹果"
}

JSON中的一个对象,由一个大括号表示。括号中描述对象的属性,通过键值对来描述对象的属性(可以理解为大括号中包含的是一个个的键值对。)

格式:
 - 键与值之间使用冒号连接
 - 多个键值对之间使用逗号分隔
 - 键值对的键 应使用引号引住 (通常Java解析时,键不使用引号会报错,而JS能正确解析。
 - 键值对的值, 可以是JS中的任意类型的数据

在JSON格式中可以与对象互相嵌套
数组格式:
[元素1,元素2...]

示例:
{
	"name":"张三三",
	"age":18,
	"pengyou":["王一","李二","黄三","孙四",{
						"name":"朱刚烈",
						"info":"可能是蜘蛛"
}],
	"wuqi":{
		"name":"方天画戟",
		"length":"40m"
	}
}

二.JSON解析
Java与JSON

JSON的用途:
将Java中的对象快速的转换为 JSON格式的字符串。
将JSON格式的字符串,转换为Java的对象。

GSON(谷歌)

导包:

(1)创建一个文件夹
创建一个文件夹

将该jar文件放到文件夹下并把文件夹命名为lib
将该jar文件放到文件夹下并把文件夹命名为lib

(2)在偏好设置里Libraries项中把刚才的文件添加进去
在偏好设置里Libraries项中把刚才的文件添加进去

(3)在Modules项中把该项目的src文件夹添加进来
在这里插入图片描述
(4)打开jar文件看到有很多文件已经存在了,OK~
在这里插入图片描述

Book类:

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

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

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Book book = (Book) o;
        return Objects.equals(id, book.id) &&
                Objects.equals(name, book.name) &&
                Objects.equals(info, book.info);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name, info);
    }

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getInfo() {
        return info;
    }

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

转换操作
1.将Java中的对象快速的转换为 JSON格式的字符串

import com.google.gson.Gson;
public class AnalysisJSON1 {
    public static void main(String[] args) {
        //1.先创建JSON对象
        Gson g = new Gson();
        //2.转换
        Book b =new Book("100","金苹果","种植苹果真辛苦");
        String s = g.toJson(b);
        System.out.println(s);
    }
}

2.将JSON格式的字符串转换为Java的对象

import com.google.gson.Gson;
public class AnalysisJSON1 {
    public static void main(String[] args) {
        //1.先创建JSON对象
        Gson g = new Gson();
        //2.转换
		Book b = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\"}",Book.class);
        System.out.println(b.getId());
    }
}

3.转换成HashMap

import com.google.gson.Gson;
public class AnalysisJSON1 {
    public static void main(String[] args) {
        //1.先创建JSON对象
        Gson g = new Gson();
		HashMap hashMap = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\"}",HashMap.class);
        System.out.println(hashMap.get("id"));
    }
}

注意:当对象里包含有数组部分时转出来是arraylist

FastJson(阿里)
1.将对象转换为JSON字符串

public class AnalysisJSON2 {
    public static void main(String[] args) {
		Book book = new Book("1002","唐诗三百首","床前明月光,疑似地上霜,举头望明月,低头思故乡");
        //对象转换为JSON字符串
        String json = JSON.toJSONString(book);
        System.out.println(json);
    }
}

2.将JSON字符串转换为对象

public class AnalysisJSON2 {
    public static void main(String[] args) {
		Book book = new Book("1002","唐诗三百首","床前明月光,疑似地上霜,举头望明月,低头思故乡");
		//JSON字符串转换为对象
		Book book = JSON.parseObject("{\"id\":\"1002\",\"info\":\"床前明月光,地上鞋一堆,床上我杰哥,喊十块一双\",\"name\":\"唐诗三百首\"}",Book.class);
        System.out.println(book.getId());
    }
}

3.转换数组[“一二三”,“二三四”,“三四五”]

public class AnalysisJSON2 {
    public static void main(String[] args) {
		List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]",String.class);
        System.out.println(strings.get(1));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值