知之为知之,深知深知!
一、认识JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式;
JSON就是javascript中的对象和数组,通过这两种结构可以表示各种复杂的结构。
1、对象:
在js中,对象表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对,其中key为对象的属性,value为对应的属性值,取值方法为对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、逻辑值、对象、null六种。对象是一个无序的“‘名称/值’对”集合。
(1)一个对象以“{”(左括号)开始,“}”(右括号)结束。
(2)每个“名称”后跟一个“:”(冒号);
(3)“‘名称/值’ 对”之间使用“,”(逗号)分隔。
eg: {"name":"job","sex":"man","age":"28"}
2、数组:
在js中,数组是中括号“[]”括起来的内容,数据结构为 [“java”,“javascript”,“vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是是数字、字符串、数组、逻辑值、对象、null六种。
数组是值(value)的有序集合。
(1)一个数组以“[”(左中括号)开始,“]”(右中括号)结束。
(2)值之间使用“,”(逗号)分隔。
经过对象、数组2种结构就可以组合成复杂的数据结构了。
三个user 对象放在一个数组中。
{
"user":[
{"name":"Job","sex":"man","age":"28"},
{"name":"Aim","sex":"women","age":"25"},
{"name":"Cecilia","sex":"women","age":"27"}
]
}
二、Fastjson
Fastjson是一个Java语言编写的高性能、功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。
Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。
Fastjson开源地址为:https://github.com/alibaba/fastjson
在maven工程中,添加如下依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.70.android</version>
</dependency>
fastJson API:
JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。
JSONObject:fastJson提供的json对象。
JSONArray:fastJson提供json数组对象。
1、json字符串-简单对象型、字符串-JSONObject之间的转换;
方法:parseObject()
public static void testStringToObject(){
String str = "{\"name\":\"job\",\"sex\":\"man\",\"age\":\"28\"}";
JSONObject obj1 = JSON.parseObject(str);
System.out.println("JSON的方法-->名字为"+obj1.getString("name"));
JSONObject obj2 = JSONObject.parseObject(str);
System.out.println("JSONObject的方法-->性别为"+obj2.get("sex"));
}
运行结果:
2、json字符串-数组、字符串-JSONObject之间的转换,;
方法:parseArray()
public static void testStringToArray(){
String str = "[{\"name\":\"job\",\"sex\":\"man\",\"age\":\"28\"},{\"name\":\"Cecilia\",\"sex\":\"women\",\"age\":\"27\"}]";
JSONArray arr1 = JSON.parseArray(str);
for (int i = 0; i < arr1.size(); i++){
JSONObject jsonObject = arr1.getJSONObject(i);
System.out.println("JSON的方法-->第"+(i+1)+"个对象的名字为"+jsonObject.getString("name"));
}
JSONArray obj2 = JSONObject.parseArray(str);
for (int i = 0; i < obj2.size(); i++){
JSONObject jsonObject = arr1.getJSONObject(i);
System.out.println("JSONObject的方法-->第"+(i+1)+"个对象的性别为"+jsonObject.getString("sex"));
}
}
运行结果:
3、JSON格式字符串与javaBean之间的转换。
public static void testStringToJaveBean(){
String str = "{\"name\":\"Job\",\"sex\":\"man\",\"age\":\"28\"}";
Guest guest = JSON.parseObject(str,Guest.class);
System.out.println("JavaBean的方法-->名字为"+guest.getName());
Guest guest2 = JSONObject.parseObject(str,Guest.class);
System.out.println("JavaBean的方法-->性别为"+guest2.getSex());
}
运行结果:
4、JSON格式字符串与javaBean数组之间的转换。
public static void testStringToJavaBeanArray(){
String str = "[{\"name\":\"job\",\"sex\":\"man\",\"age\":\"28\"},{\"name\":\"Cecilia\",\"sex\":\"women\",\"age\":\"27\"}]";
List<Guest> list = JSON.parseArray(str,Guest.class);
for (int i = 0; i < list.size(); i++){
System.out.println("JSON的方法-->第"+(i+1)+"个对象的名字为"+list.get(i).getName());
}
List<Guest> list2 = JSONArray.parseArray(str,Guest.class);
for (int i = 0; i < list2.size(); i++){
System.out.println("JSON的方法-->第"+(i+1)+"个对象的性别为"+list2.get(i).getSex());
}
}
运行结果: