1.Json格式
1.1什么是JSON?
JSON就是JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.
1.2JSON的格式
咱们首先来看下Java的对象格式,通常都先要声明属性,然后通过new完对象后再用set方法赋值或者是使用构造方法赋值。
java
class Book{
private String name;
private String info;
get/set...
}
Book b = new Book();
b.setName("解忧杂货铺");
b.setInfo("超级推荐的一本书");
......
再来看看JSON的格式
{
"name":"解忧杂货铺",
"info":"超级推荐的一本书"
}
由此可以看出:一个对象, 由一个大括号表示。括号中双引号描述对象的属性 ,通过键值对来描述对象属性对应的值
(可以理解为, 大括号中, 包含的是一个个的键值对.)
属性与值之间用冒号连接, 多个键值对之间使用逗号分隔。
当然,JSON中并不只是只有大括号。除此之外,JSON中还能包括数组,数组中还能嵌套对象,下面举一个简单的例子,好让大家明白点。
{
"Grade":"大一",
"Major":["数学","电气","教科",{
"Class":"软件工程",
"info":"学习Java等编程语言........."
}]
}
在这个Major数组中嵌套了一个对象,对象属性有Class与info等
所以,对象和数组可以相互嵌套是没问题的,大家记住这一点哈。
2.JSON解析
在Java中,JSON不仅能够快速的转换为 JSON格式的字符串. 也能够将JSON格式的字符串,转换为Java的对象.
用的较多的就是谷歌的Gson与阿里巴巴的FastJson的JSON解析库
下面就来简单的介绍一下这两个开源的JSON解析库(引入Jar包或者是导入Maven依赖我就不多说了嗷)
2.1 Gson
首先我们看一下,Gson的Java对象------>JSON字符串
需要转换JSON字符串的位置编写如下代码 String json = new Gson().toJson(student);
/**
* Gson将对象转换为JSON
*/
public class demo1 {
public static void main(String[] args) {
Student student = new Student("张三","20","1001");
// 需要转换JSON字符串的位置编写如下代码
String json = new Gson().toJson(student);
System.out.println(json);
}
}
class Student{
private String name;
private String age;
private String code;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Student() {
}
public Student(String name, String age, String code) {
this.name = name;
this.age = age;
this.code = code;
}
}
输出效果
然后,我们来看看Gson怎么将JSON数据格式转换为Java的对象。
在需要转换Java对象的位置, 编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
public class demo1 {
public static void main(String[] args) {
// Student student = new Student("张三","20","1001");
// 需要转换JSON字符串的位置编写如下代码
// String json = new Gson().toJson(student);
// System.out.println(json);
String json="{\"name\":\"李四\",\"age\":\"21\",\"code\":\"1002\"}";
Student student = new Gson().fromJson(json,Student.class);
System.out.println(student.toString());
}
}
输出效果如下
2.2 FastJson
将Java对象转换为JSON字符串
就使用toJSONString();方法
格式:String json = JSON.toJSONString(需要转换的对象);
将JSON字符串转换为Java对象
parseObject();方法 :将JSON字符串转换为对象。
parseArray(); 方法 :将JSON字符串转换为存储对象的List集合。
类型 对象名=JSON.parseObject(JSON字符串,类型.class);
List<类型>list =JSON.parseArray(JSON字符串,类型.class);
两种效果我放在一起演示
/**
* FastJson将对象转换为JSON
*/
public class demo2 {
public static void main(String[] args) {
Student student = new Student("张三","20","1001");
//对象转Json
String json = JSON.toJSONString(student);
System.out.println(json);
System.out.println("============================");
System.out.println("FastJson json转对象");
String json2="{\"name\":\"李四\",\"age\":\"21\",\"code\":\"1002\"}";
Student student2 = JSON.parseObject(json2,Student.class);
System.out.println(student2.toString());
System.out.println("============================");
System.out.println("Json数组转List");
List<String> lists = JSON.parseArray("[\"张三\",\"李四\",\"王五\"]",String.class);
for (String s: lists) {
System.out.println(s);
}
}
}
输出
JSON解析大概就是这些吧,多多指教!