一、简介
JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.
二、对象格式
{
"reason": "success",
"result": [
{
"day": "1/1",
"date": "前45年01月01日",
"title": "罗马共和国开始使用儒略历",
"e_id": "1"
}
],
"error_code": 0
}
{} : 大括号代表一个对象
[] : 中括号代表一个数组
:: 冒号前面是属性名,后面是属性值
" " : 双引号内是属性值,Boolean和int 类型可以不用加,属性名可加可不加
,: 逗号 每个属性之间用逗号隔开,最后一个属性不用加
三、JSON 解析
解析之前都要先引入jar包
1、Gson
1.1、将对象转换为json类型字符串
步骤:
- 引入jar包 (下载地址)
- 在需要转换JSON字符串的位置编写如下代码: String json = new Gson().toJSON(要转换的对象);
一个简单的小栗子
/**
* 将一个对象转换为json格式
*/
public class GsonDemo01 {
public static void main (String[] args) {
// 1、创建Gson对象
Gson gson = new Gson ();
// 2、转换
// 初始化一个对象
Person person = new Person ("1001","大锤","一个秃头的小锤锤" );
String s = gson.toJson (person);
System.out.println (s);
}
}
运行截图:
1.2、将JSON字符串转换为对象
步骤:
- 引入jar包(下载地址)
- 在需要转换Java对象的位置, 编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
/**
* 将一个json格式,转换为一个对象
*/
public class GsonDemo02 {
public static void main (String[] args) {
// 1、创建Gson对象
Gson gson = new Gson ();
// 2、转换
// {"id":"1001","name":"大锤","info":"一个秃头的小锤锤"}
Person person = gson.fromJson ("{\"id\":\"1001\",\"name\":\"大锤\",\"info\":\"一个秃头的小锤锤\"}", Person.class);
System.out.println (person.toString ());
}
}
运行截图
如果JSON字符串中包含数组,那么 在转换时会将数组转化为ArrayList集合类型
/**
* 将一个json格式(包含数组的),转换为一个对象
*/
public class GsonDemo03 {
public static void main (String[] args) {
// 1、创建Gson对象
Gson gson = new Gson ();
// 2、转换
// {"id":"1001","name":"大锤","info":"一个秃头的小锤锤", "family":["妈妈", "爸爸", "姐姐"]}
HashMap hashMap = gson.fromJson ("{\"id\":\"1001\",\"name\":\"大锤\",\"info\":\"一个秃头的小锤锤\", \"family\":[\"妈妈\", \"爸爸\", \"姐姐\"]}", HashMap.class);
System.out.println (hashMap.toString ());
System.out.println (hashMap.get ("family"));//[妈妈, 爸爸, 姐姐]
System.out.println (hashMap.get ("family").getClass ()); //class java.util.ArrayList
List family = (List)hashMap.get("family");
System.out.println (family.get (2));
}
}
运行截图
2、FastJson
2.1、将对象转换为json类型字符串
步骤:
- 引入JAR包 (FastJson 下载地址)
- 在需要转换JSON字符串的位置编写如下代码:
String json=JSON.toJSONString(要转换的对象);
一个简单的小栗子:
/**
* 对象转换为json格式
*/
public class FastJsonDemo01 {
public static void main (String[] args) {
Person person = new Person ("1002", "小锤", "一个秃头的大锤锤");
// 转换
String s = JSON.toJSONString (person);
System.out.println (s);
}
}
运行截图:
2.2、将JSON字符串转换为对象
- 如果看到是{ }–>使用JSONObject
- 如果看到的[ ]–>使用JSONArray解析
步骤:
- 引入JAR包 (FastJson 下载地址)
- 在需要转换Java对象的位置, 编写如下代码:
类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
或 List list=JSON.parseArray(JSON字符串,类型.class);
一个简单的小栗子:
/**
* Json格式转化为对象
*/
public class FastJsonDemo02 {
public static void main (String[] args) {
// 转换
// {"name":"小锤","id":"1002","info":"一个秃头的大锤锤"}
Person person = JSON.parseObject ("{\"name\":\"小锤\",\"id\":\"1002\",\"info\":\"一个秃头的大锤锤\"}", Person.class);
System.out.println (person.toString ());
}
}
运行截图:
public class FastJsonDemo03 {
public static void main (String[] args) {
// 转换
// ["吃饭", "睡觉", "哈哈哈"]
List<String> list = JSON.parseArray ("[\"吃饭\", \"睡觉\", \"哈哈哈\"]", String.class);
System.out.println (list.getClass ());
System.out.println (list.toString ());
System.out.println (list.get (2));
}
}
运行截图: