JSON是JavaScript对象的一种标准表达形式,是一种轻量的数据交换格式。现在很多的Java应用都已经抛弃XML格式,开始使用JSON格式作为数据交换的标准。我们平时经常需要把Java对象转换为JSON格式对象,或者把JSON格式对象转换为Java对象。
本文我们展示如何使用一个JSON库:Gson,把对象转换为JSON或者是把JSON转换为对象。
Gson是一个非常好用的JSON库,我们先来学习如何使用最主要的两个方法:
toJson() --把Java对象转换为JSON格式
fromJson()--把JSON格式转换为Java对象
1.Gson依赖
对于Maven用户,可以在pom.xml添加如下依赖;如果不是Maven用户可以到Gson的官网下载。
com.google.code.gson
gson
1.7.1
2.Java POJO对象
如下,先建一个包含初始值Java的POJO对象,解析来我们用Gson来做转换。
package com.qiyadeng.core;
import java.util.ArrayList;
import java.util.List;
public class DataObject {
private int data1 = 100;
private String data2 = "hello";
private List list = new ArrayList() {
{
add("String 1");
add("String 2");
add("String 3");
}
};
//getter and setter 方法
@Override
public String toString() {
return "DataObject [data1=" + data1 + ", data2=" + data2 + ", list="
+ list + "]";
}
}
3.toJson()
把Java对象转换为JSON字符串,并且储存为file.json文件。
package com.qiyadeng.core;
import java.io.FileWriter;
import java.io.IOException;
import com.google.gson.Gson;
public class ToGsonExample {
public static void main(String[] args) {
DataObject obj = new DataObject();
Gson gson = new Gson();
// convert java object to JSON format,
// and returned as JSON formatted string
String json = gson.toJson(obj);
try {
//write converted json data to a file named "file.json"
FileWriter writer = new FileWriter("c:\temp\file.json");
writer.write(json);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(json);
}
}
输出结果为:
{"data1":100,"data2":"hello","list":["String 1","String 2","String 3"]}
4.fromJson()
从file.json中读取数据,并且转换为Java对象。
package com.qiyadeng.core;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.google.gson.Gson;
public class FromJsonExample {
public static void main(String[] args) {
Gson gson = new Gson();
try {
BufferedReader br = new BufferedReader(
new FileReader("c:\temp\file.json"));
//convert the json string back to object
DataObject obj = gson.fromJson(br, DataObject.class);
System.out.println(obj);
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出结果
DataObject [data1=100, data2=hello, list=[String 1, String 2, String 3]]
完整源代码
地址:https://coding.net/u/qiyadeng/p/GsonExample/git