一、概述
JSON(JavaScript Object Notation)是一种数据交换格式,易于机器解析和生成,能有效地提升网络传输效率,因此学习JSON在Java中的生成和读取。JSON其本质是JS构建的对象的字符串表示方法。
二、格式表示
JSON中,一个对象由一对大括号表示,括号内通过键值对描述对象的属性,数组用一对中括号表示,用逗号分隔。
例如,在JAVA中表示以下Book类的一个对象:
class Book{
String name;
String info;
Book[] relatedBooks;
}
用JSON的格式表示一个Book类对象可以是:
{
“name”:”唐诗三百首”,
“info”:”记录了唐代的精彩诗篇”,
“relatedBooks” : [{“name”:“宋词精选”,”info”:”记录了宋朝的金典词作”},{“name”:”元曲名作”}]
}
三、 JSON文件在JAVA中常见的解析和生成方式
1, 使用Google的Gson包
1) 将JAVA对象转换成JSON字符串:
String s = new GSON().toJSON(待转换的对象);
2) 将JSON字符串转换成JAVA对象:
Book b = new GSON().fromJson( s , Book.class);
2,使用阿里的FastJSON包
1) 将JAVA对象转换成JSON字符串:
String s = JSON.toJSONString(待转换的对象);
2) 将JSON字符串转换成JAVA对象:
Book b = JSON.parseObject( s , Book.class);
另附综合的测试Demo:
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
public class Demo7 {
public static void main(String[] args) {
Person p = new Person(18,"张三");
Gson g = new Gson();
String s1 = g.toJson(p);
System.out.println(s1);
System.out.println("-------------------------------");
Person temp = g.fromJson(s1,Person.class);
System.out.println(temp);
System.out.println("-------------------------------");
String s2 = JSON.toJSONString(p);
System.out.println(s2);
System.out.println("-------------------------------");
temp = JSON.parseObject(s2,Person.class);
System.out.println(temp);
}
}
class Person{
private int age;
private String name;
public Person(){};
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}
运行结果如图所示: