JSON解析

文章目录

  • 前言
  • 一、JSON的格式
    • 1、对象格式
    • 2、JSON的文本格式
    • 3、数组格式
    • 4、综合案例
  • 二、Gson
    • 1、实现对象和JSON字符串的转换
    • 2、实现JSON字符串和对象的转换
    • 3、实现JSON字符串和Map集合的转换
  • 三、fastjason
    • 1、实现对象和JSON字符串的转换
    • 2、实现JSON字符串和对象的转换
    • 3、实现数组转换为String类型的List集合
  • 四、 总结


前言

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


提示:以下是本篇文章正文内容,下面案例可供参考

一、JSON的格式

1、对象格式

首先简单的描述一下JAVA中的对象格式:

//一本书书名简介
 javaclass Book{ 
 private String name;
 private String info;	
 get/set... 
}
//案例:
Book b = new Book(); 
b.setName(“金苹果”);
b.setInfo(“种苹果”);
...

2、JSON的文本格式

接下来描述一下JSON的文本格式:
一个对象, 由一个大括号表示.。
括号中描述对象的属性 ,通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对。)
格式:键与值之间使用冒号(:)连接, 多个键值对之间使用逗号分隔,键值对的键应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析) 键值对的值,,可以是JS中的任意类型的数据。

代码如下(示例):

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

3、数组格式

代码如下(示例):

//在JSON格式中可以与对象相嵌套,即元素可以为对象,如:[{},{}...],对象中也可以包含数组,如:{[],[]...} 
[元素1,元素2...]

4、综合案例

{ 
 "name":"齐天大圣",
 "age":999, 
 "pengyou":["沙悟净",
 			"八戒",
 			"天蓬元帅",
 			"悟能",
 			{ "name":"野马老师", "info":"像匹野马一样狂奔在技术钻研的道路上" }
 			], 
 "heihei":{ "name":"大长刀",
 			 "length":"40m" } 
 } 

该案例就是一个JSON字符串格式,其中该对象里面的属性可以是对象也可以是数组(例如:“pengyou”这个属性),数组里的元素可以对象(如:{ “name”:“野马老师”, “info”:“像匹野马一样狂奔在技术钻研的道路上” })。


注释:下面的转换的Book类均为该类:

package com.java.jison;

import java.util.Objects;

public class Book {
	//定义两个变量,书名和简介
    private String name;
    private String info;
    
    public Book() {
    }

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

    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;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", 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 name.equals(book.name) &&
                info.equals(book.info);
    }

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

二、Gson

1、实现对象和JSON字符串的转换

转换JSON字符串的步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的对象);

package com.java.jison;

import com.google.gson.Gson;

/**
 * 运用Gson实现对象转换为Json字符串的转换
 */
public class Demo1 {
    public static void main(String[] args) {
        //创建Gson对象
        Gson gson = new Gson();
        Book b = new Book("金苹果","种苹果真辛苦!");
        //调用toJson将对象转换为json文件格式
        String s = gson.toJson(b);
        System.out.println(s);//输出:{"name":"金苹果","info":"种苹果真辛苦!"}
    }
}

2、实现JSON字符串和对象的转换

转换JSON字符串的步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
类名 对象名 = new Gson().fromJson(要转换的Jason字符串);
注:在转换时,Jason字符串与对象类型一定要匹配

package com.java.jison;

import com.google.gson.Gson;

/**
 * 运用Gson调用fromJson将Json字符串转换对象
 */
public class Demo3 {
    public static void main(String[] args) {
        //{"name":"金苹果","info":"种苹果真辛苦!"}
        //调用fromJson将Gson文件转换为匹配的对象
        Gson gson = new Gson();
        Book book = gson.fromJson("{\"name\":\"金苹果\",\"info\":\"种苹果真辛苦!\"}", Book.class);
        System.out.println(book.getName());//输出:金苹果
    }
}

3、实现JSON字符串和Map集合的转换

import com.google.gson.Gson;

import java.util.HashMap;
import java.util.List;

/**
 * 当文件类型为未知类时,可以运用gson对象调用fromJson将其转换为Map集合类
 */
public class Demo4 {
    public static void main(String[] args) {
        //{"name":"金苹果","info":"种苹果真辛苦!","数组":["你叉叉","穷哈哈","骑着扫帚飞"]}
        //若是该Gson文件是未知类,则可以将它转换成Map集合进行有效数据的筛选
        Gson gson = new Gson();
        HashMap hashMap = gson.fromJson("{\"name\":\"金苹果\",\"info\":\"种苹果真辛苦!\",\"数组\":[\"你叉叉\",\"穷哈哈\",\"骑着扫帚飞\"]}", HashMap.class);
        //数组的类型为ArrayList类
        System.out.println( hashMap.get("数组").getClass());//输出:class java.util.ArrayList
        //将数组强转为List类并且取出它的第一个元素
        List list  = (List) hashMap.get("数组");
        System.out.println(list.get(1));//输出:穷哈哈
    }
}

三、fastjason

1、实现对象和JSON字符串的转换

import com.alibaba.fastjson.JSON;
/**
 * 运用fastjson进行对象转换到JSON字符串
 */
public class Demo2 {
    public static void main(String[] args) {
        Book b = new Book("唐诗三百首","这本书里面有三百首唐诗");
        //调用toJSONString()将对象转换成JSON字符串
        String s = JSON.toJSONString(b);
        System.out.println(s);
    }
}

2、实现JSON字符串和对象的转换

import com.alibaba.fastjson.JSON;

/**
 * 运用fastjason将JASON字符串转换为对象
 */
public class Demo5 {
    public static void main(String[] args) {
        //{"info":"这本书里面有三百首唐诗","name":"唐诗三百首"}
        //调用parseObject()方法将Json文件转换为对应的对象
        Book book = JSON.parseObject("{\"info\":\"这本书里面有三百首唐诗\",\"name\":\"唐诗三百首\"}", Book.class);
        System.out.println(book.getName());//输出:唐诗三百首
    }
}

3、实现数组转换为String类型的List集合

import com.alibaba.fastjson.JSON;

import java.util.List;

/**
 * 运用fastjason将数组转换为String类型的List集合
 */
public class Demo6 {
    public static void main(String[] args) {
        //["嘿嘿","俺","老","孙","来","也"]
        //将数组转换成String类型的数组
        List<String> strings = JSON.parseArray("[\"嘿嘿\",\"俺\",\"老\",\"孙\",\"来\",\"也\"]", String.class);
        System.out.println(strings.get(1));//输出:俺
    }
}

四、 总结

本文主要介绍了JASON的两种解析方式:Gson和fastjason。无论使用哪一种方式,我们一定要及时更新jar包避免bug的发生。以上就是我个人对于JASON解析的学习总结,要是对大家有些许帮助便值当,请各路大佬批评指正!

你可能感兴趣的:(JASON解析,java,intellij-idea,json)