JSON
1,JSON简介
JSON(JavaScript Object Notation)(http://www.json.org/) 是一种轻量级的数据交换格式。采用独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人的阅读跟编写,同时也适用于机器的解析跟生成,有效的提升网络数据。
JSON中支持2种数据格式:对象跟数组2种数据。具体支持的值类型有数字、字符串、boolean、null
- 对象用花括号表示{}
- 数组用中括号表示[]
- 数据表现为键值对用:隔开
- 同级数据用,号隔开
例如:
// json对象
{ "name":"seven","age":"18"}
// json数组,数组里面的元素是对象
[
{“name”:"张三","age":"21"},
{“name”:"李四","age":"22"}
]
2,fastjson
Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。
主要特点:
- 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
- 强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
- 零依赖(没有依赖其它任何类库除了JDK)
Fastjson的获取:
下载地址:http://repo1.maven.org/maven2/com/alibaba/fastjson/
maven地址:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.59</version>
</dependency>
3,对象转换JSON字符串
// java对象
Person person = new Person();
person.setName("seven");
person.setAge(18);
//把java对象转成JSON格式输出到控制台
System.out.println(JSON.toJSONString(person));
//控制台输出{"age":18,"name":"seven"}
3,JSON字符串转成对象
// 创建JSON字符串
String jsonStr = "{'age':18,'name':'seven'}";
// 通过parseObject方法将json字符串直接转成Person对象。
Person p = JSON.parseObject(jsonStr, Person.class);
4,集合转换成JSON字符串
// 创建3个java对象
Person person1 = new Person();
person1.setName("seven");
person1.setAge(18);
Person person2 = new Person();
person2.setName("zhansan");
person2.setAge(22);
Person person3 = new Person();
person3.setName("lisi");
person3.setAge(25);
// 创建集合,将3个Person对象添加到集合中
ArrayList<Person> personList = new ArrayList<Person>();
personList.add(person1);
personList.add(person2);
personList.add(person3);
// 通过toJSONString方法将集合转成JSON字符串
System.out.println(JSON.toJSONString(personList));
5,JSON字符串转成集合
// 创建JSON字符串
String jsonStr = "[{'age':18,'name':'seven'},{'age':22,'name':'zhansan'},{'age':25,'name':'lisi'}]";
// 通过parseArray方法将json字符串直接转成集合。
ArrayList<Person> list = (ArrayList<Person>) JSON.parseArray(jsonStr,
Person.class);
6,MAP转成JSON
// 创建Map对象
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "zhangsan");
map.put("age", 19);
// 通过toJSONString方法将map对象转成JSON字符串。
System.out.println(JSON.toJSONString(map));
7,JSON转成Map
// 创建JSON字符串
String jsonStr = "{'age':18,'name':'seven'}";
// 通过parseObject方法将json字符串直接转成Map。
Map<String, Object> map = (Map<String, Object>) JSON.parseObject(jsonStr);
8,其它
在对象跟JSON转换的时候,JSON里面的属性名跟对象里面的属性名需要完全一致才能匹配上,如果2者不一样需要使用注解来标准,这样在转换的时候才能将值匹配。
如JSON字符串:{‘age’:18,‘name’:‘seven’}在转换成Person对象的时候。
// 需要使用此注解来映射json字符串里面的字段名跟此字段名一致。
@JSONField(name = "name")
private String myName;
private int age;
public String getMyName() {
return myName;
}
public void setMyName(String myName) {
this.myName = myName;
}
// 注解也可以加在set/get方法上面
private String myName;
private int age;
@JSONField(name = "name")
public String getMyName() {
return myName;
}
@JSONField(name = "name")
public void setMyName(String myName) {
this.myName = myName;
}