一、什么是JSON
JSON(JavaScript Object Notation)是JavaScript对象表示法,用于存储和交换文本信息的语法,类似XML,但比XML更小、更灵活。它是独立的语言,具有自我描述性,所以更易理解。 JSON使用JavaScript语法来描述数据对象,但SJON仍然独立于语言平台。JSON解析器和JSON库支持许多不同的编程语言。
二、Gson
java json对象的处理,目前有好一些类库,比较著名的有Jackson,Fastjson等,而Gson是google自己写的一个Java对象与JSON相互转化的工具包.它轻巧简便,易于使用,而且有很完备的文档可供查询,它是一个开源项目,其网址为 http://code.google.com/p/google-gson。 这里介绍一下google封装的类库gson。 gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要 使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。 1)toJason()方法将对象转换成Json字符串 2)fromJson()方法来实现从Json相关对象到java实体的方法。
三、导入Jar包
1、下载gson-2.2.4.jar
四、示例代码
Json_all.java
package json;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class Json_all {
/**
* Gson 谷歌的一个java 和 Json 解析器
* toJson() : Java 转换成 Json
* fromJson() : Json 转换成 Java
*/
public static void main(String[] args) {
Gson gson = new Gson();
// 基本数据转换
int[] numbers = { 1, 1, 2, 3, 5, 8, 13 };
String[] days = { "Mon", "Tue", "Wed" };
String numbersJson = gson.toJson(numbers);
String daysJson = gson.toJson(days);
int[] fibonacci = gson.fromJson(numbersJson, int[].class);
String[] weekDays = gson.fromJson(daysJson, String[].class);
// map <==> json
Map<String, String> colours = new HashMap<String, String>();
colours.put("black", "黑色");
colours.put("red", "红色");
colours.put("blue", "蓝色");
String coloursJson = gson.toJson(colours); //
Type type = new TypeToken< Map<String, String> >() {}.getType(); // 申明类型 Map<String, String>
Map<String, String> map = gson.fromJson(coloursJson, type);
// 单个对象 转换
Student stu = new Student("leovany", "China", new Date(2000, 1, 1));
String stuJson = gson.toJson(stu);
Student student = gson.fromJson(stuJson, Student.class);
// 对象集合 转换
List<Student> students = new ArrayList<Student>();
Student a = new Student("Alice", "Apple St", new Date(2014, 10, 1));
Student b = new Student("Bob", "Banana St", null);
students.add(a);
students.add(b);
String studentsJson = gson.toJson(students);
Type type2 = new TypeToken<List<Student>>() {}.getType(); // 申明类型 List<Student>
List<Student> studentList = gson.fromJson(studentsJson, type2);
}
}
Student.java
package json;
import java.util.Date;
public class Student {
private String name ;
private String address;
private Date dateOfBirth;
public Student(String name, String address, Date dateOfBirth) {
this.name = name;
this.address = address;
this.dateOfBirth = dateOfBirth;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
}
参考:http://www.cnblogs.com/haippy/archive/2012/05/20/2509329.html