JAVA开发中关于JSON语法及解析

JSON语法及解析

1、JSON简介:

​ JavaScript Object Notation ,JS对象简谱 ,是一种轻量级的数据交换格式。

JSON的优点:

​ (1)数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;

​ (2)易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;

​ (3)支持多种语言,包括服务器端各语言的解析;

​ (4)因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。

JSON的缺点:

​ (1)没有xml格式这么推广的深入人心和喜用广泛,没有xml那么通用性;

​ (2)JSON格式目前在webservice中推广还属于初级阶段;

2、语法格式:

对象格式:

​ 对象,由大括号{}表示,大括号中可以描述对象的属性,并用键值对的形式来表示。

​ 键值对中的键和值用冒号: 分隔。

​ 多个键值对之间用逗号,分隔。

​ 键值对的值可以是JavaScript中任意的数据类型。

​ 键值对的键建议用双引号引住,通常在JAVA解析时,如果键不用双引号,那么会报错。但是在JS中不会报错。

数组格式:

​ 在JSON格式中数组可以与对象互相嵌套,一个数组以[开始,以]结束。每个值之间用,分隔。

例如: [元素1,元素2…]

3、Java与JSON的交互:

主要作用:

​ (1)Java中的对象 快速的转换为 JSON格式的字符串。

​ (2)将JSON格式的字符串, 转换为Java的对象。

​ JSON解析对于Java开发来讲,最常用的两种类库是Gson和FastJson。

Gson:

​ Gson是Google提供的方便在json数据和Java对象之间转化的类库。

​ 使用Gson首先要导入Jar包 : Jar包地址链接

​ 解析流程:

//将对象解析为JSON字符串		引入Jar包
//1、	创建一个封装的实体类
import java.util.Objects;

public class Book {
     
    private String id;
    private String name;
    private String info;
    public Book() {
     
    }
    public Book(String id, String name, String info) {
     
        this.id = id;
        this.name = name;
        this.info = info;
    }
    @Override
    public String toString() {
     
        return "Book{" +
                "id='" + id + '\'' +
                ", 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 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;}
}
//2、	在测试类中进行Gson解析
import com.google.gson.Gson;

public class GsonTest01 {
     
    public static void main(String[] args) {
     
        Book b = new Book("1001","三国","火烧赤壁");	//创建Book对象
//        Gson g = new Gson();			//创建Gson对象
        String text = g.toJson(b);		//将该对象转换为字符串
        System.out.println(text);
    }
}
//执行结果:{"id":"1001","name":"三国","info":"火烧赤壁"}
//将字符串转换为对象		引入Jar包
//格式:对象 = new Gson().fromJson(JSON字符串,对象类型.class);
public class GsonTest02{
     
    public static void main(String[] args){
     
        Gson g = new Gson();	//创建Json对象
        Book b = g,fromJson("{"\id\":\"1001\",\"name\":\"三国",\"info\":\"火烧赤壁\"}",Book.class);
    	System.out.pritnln(b.getId());
        System.out.pritnln(b.getName());
        System.out.pritnln(b.getInfo());
    }
}
/*执行结果:
	1001
	三国
	火烧赤壁*/
//当Json字符串中包含数组		例如:{"id":"1001","name":"三国演义","info":["三顾茅庐","草船借箭","火烧赤壁"]}
public class GsonTest03{
     
    public static void main(String[] args){
     
        Gson g = new Gson();
        HashMap hashMap = g.fromJson("{\"id\":\"1001\",\"name\":\"三国演义\",\"info\":[\"三顾茅庐\",\"草船借箭\",\"火烧赤壁\"]}", HashMap.class);	//将其转换为Map集合
        ArrayList arrayList = (ArrayList) hashMap.get("info");//集合中的内容是以ArrayList存在的
        System.out.println(arrayList.get(1));
    }
}

FastJson:

​ Fastjson.jar是阿里开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。

FastJson的Jar包地址:Jar包地址链接

//将对象转换为JSON字符串
public class FastJsonTest01 {
     
    public static void main(String[] args) {
     
        Book book = new Book("1001","水浒传","一百单八将");
        String s = JSON.toJSONString(book);
        System.out.println(s);
    }
}
//执行结果:{"id":"1001","info":"一百单八将","name":"水浒传"}
//将JSON字符串转换为集合	例如:{"id":"1001","info":"一百单八将","name":"水浒传"}
public class FastJsonTest02{
     
    public static void main(String[] args){
     
		Map hashMap = JSON.parseObject("{\"id\":\"1001\",\"info\":\"一百单八将\",\"name\":\"水浒传\"}", HashMap.class);
        System.out.println(hashMap.get("id"));
    }
}
//执行结果:1001
//将JSON数组转换为字符串	例如:["一二三四","四三二一","二三四五"]
public class FastJsonTest03 {
     
    public static void main(String[] args) {
     
		List<String> strings = JSON.parseArray("[\"一二三四\",\"四三二一\",\"二三四五\"]", String.class);
        System.out.println(strings.get(1));
    }
}
//执行结果:四三二一

你可能感兴趣的:(json,字符串,java,xml,编程语言)