什么是JSON?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等),这些特性使JSON成为理想的数据交换语言。
现在我们就来研究一下fastJson。
Fastjson是国内著名的电子商务互联网公司阿里巴巴内部开发的用于java后台处理json格式数据的一个工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
1).速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser,包括自称最快的jackson。
2).功能强大,完全支持java bean、集合、Map、日期、Enum,支持范型,支持自省。
3).无依赖,能够直接运行在Java SE 5.0以上版本。
4).支持Android。
5).开源 (Apache 2.0)
这是fastJson的网址:http://code.alibabatech.com/wiki/display/FastJSON/Overview
其中包含了json数据处理的教程,jar下载地址,example样例等。
下面给出fastJson处理json数据格式的代码样例:
-
package fastJson.test;
-
-
import com.alibaba.fastjson.JSON;
-
import com.alibaba.fastjson.JSONObject;
-
import com.alibaba.fastjson.serializer.SerializerFeature;
-
-
public class FastJsonTest
-
{
-
-
-
-
-
public void toJsonString()
-
{
-
User user = new User("testFastJson001", "maks", 105);
-
String text = JSON.toJSONString(user);
-
System.out.println("toJsonString()方法:text=" + text);
-
-
}
-
-
-
-
-
public void parseJsonObject()
-
{
-
String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";
-
JSONObject json = JSON.parseObject(text);
-
System.out.println("parseJsonObject()方法:json==" + json);
-
-
}
-
-
-
-
-
public void parseBeanObject()
-
{
-
String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";
-
User user = (User) JSON.parseObject(text, User.class);
-
System.out.println("parseBeanObject()方法:user==" + user.getId() + "," + user.getName() + "," + user.getAge());
-
-
}
-
-
-
-
-
public void bean2Json()
-
{
-
User user = new User("testFastJson001", "maks", 105);
-
JSONObject jsonObj = (JSONObject) JSON.toJSON(user);
-
System.out.println("bean2Json()方法:jsonObj==" + jsonObj);
-
-
}
-
-
-
-
-
public void parseJSONAndBeanEachother()
-
{
-
User user = new User("testFastJson001", "maks", 105);
-
SerializerFeature[] featureArr = { SerializerFeature.WriteClassName };
-
String text = JSON.toJSONString(user, featureArr);
-
System.out.println("parseJSONAndBeanEachother()方法:text==" + text);
-
-
User userObj = (User) JSON.parse(text);
-
System.out.println("parseJSONAndBeanEachother()方法:userObj==" + userObj.getId() + "," + userObj.getName() + "," + userObj.getAge());
-
-
}
-
-
public static void main(String[] args)
-
{
-
FastJsonTest test = new FastJsonTest();
-
-
test.toJsonString();
-
-
test.parseJsonObject();
-
-
test.parseBeanObject();
-
-
test.bean2Json();
-
-
test.parseJSONAndBeanEachother();
-
}
-
}
控制台输出结果:
-
toJsonString()方法:text={"age":105,"id":"testFastJson001","name":"maks"}
-
parseJsonObject()方法:json=={"age":105,"id":"testFastJson001","name":"maks"}
-
parseBeanObject()方法:user==testFastJson001,maks,105
-
bean2Json()方法:jsonObj=={"age":105,"id":"testFastJson001","name":"maks"}
-
parseJSONAndBeanEachother()方法:text=={"@type":"fastJson.test.User","age":105,"id":"testFastJson001","name":"maks"}
-
parseJSONAndBeanEachother()方法:userObj==testFastJson001,maks,105
附:javaBean类User.java
-
package fastJson.test;
-
-
import java.io.Serializable;
-
-
public class User implements Serializable {
-
-
private static final long serialVersionUID = 1L;
-
-
private String id;
-
private String name;
-
private int age;
-
-
public User() {
-
super();
-
}
-
-
public User(String id, String name, int age) {
-
super();
-
this.id = id;
-
this.name = name;
-
this.age = age;
-
}
-
-
public int getAge() {
-
return age;
-
}
-
-
public void setAge(int age) {
-
this.age = age;
-
}
-
-
public String getId() {
-
return id;
-
}
-
-
public void setId(String id) {
-
this.id = id;
-
}
-
-
public String getName() {
-
return name;
-
}
-
-
public void setName(String name) {
-
this.name = name;
-
}
-
-
}
fastJson对数组、List、Map的处理代码:
-
package fastJson.test;
-
-
import java.util.ArrayList;
-
import java.util.HashMap;
-
import java.util.List;
-
import java.util.Map;
-
-
import com.alibaba.fastjson.JSON;
-
import com.alibaba.fastjson.JSONArray;
-
-
public class FastJsonTest1
-
{
-
-
-
-
-
public void array2Json(){
-
String[] arr = {"bill","green","maks","jim"};
-
String jsonText = JSON.toJSONString(arr, true);
-
System.out.println("array2Json()方法:jsonText=="+jsonText);
-
-
}
-
-
-
-
-
public void json2Array(){
-
String jsonText = "[\"bill\",\"green\",\"maks\",\"jim\"]";
-
JSONArray jsonArr = JSON.parseArray(jsonText);
-
System.out.println("json2Array()方法:jsonArr=="+jsonArr);
-
-
}
-
-
-
-
-
public void array2Json2(){
-
User user1 = new User("P001","TOM",16);
-
User user2 = new User("P002","JACKSON",21);
-
User user3 = new User("P003","MARTIN",20);
-
User[] userArr = {user1,user2,user3};
-
String jsonText = JSON.toJSONString(userArr, true);
-
System.out.println("array2Json2()方法:jsonText=="+jsonText);
-
-
}
-
-
-
-
-
public void json2Array2(){
-
String jsonText = "[{\"age\":16,\"id\":\"P001\",\"name\":\"TOM\"},{\"age\":21,\"id\":\"P002\",\"name\":\"JACKSON\"},{\"age\":20,\"id\":\"P003\",\"name\":\"MARTIN\"}]";
-
JSONArray jsonArr = JSON.parseArray(jsonText);
-
System.out.println("json2Array2()方法:jsonArr=="+jsonArr);
-
-
}
-
-
-
-
-
public void list2Json(){
-
List list = new ArrayList();
-
User user1 = new User("L001","TOM",16);
-
list.add(user1);
-
User user2 = new User("L002","JACKSON",21);
-
list.add(user2);
-
User user3 = new User("L003","MARTIN",20);
-
list.add(user3);
-
String jsonText = JSON.toJSONString(list, true);
-
System.out.println("list2Json()方法:jsonText=="+jsonText);
-
-
}
-
-
-
-
-
public void list2Json2(){
-
List list = new ArrayList();
-
Address address1 = new Address("广东省","深圳市","科苑南路","580053");
-
User user1 = new User("L001","TOM",16,address1);
-
list.add(user1);
-
Address address2 = new Address("江西省","南昌市","阳明路","330004");
-
User user2 = new User("L002","JACKSON",21,address2);
-
list.add(user2);
-
Address address3 = new Address("陕西省","西安市","长安南路","710114");
-
User user3 = new User("L003","MARTIN",20,address3);
-
list.add(user3);
-
String jsonText = JSON.toJSONString(list, true);
-
System.out.println("list2Json2()方法:jsonText=="+jsonText);
-
-
}
-
-
-
-
-
public void map2Json(){
-
Map map = new HashMap();
-
Address address1 = new Address("广东省","深圳市","科苑南路","580053");
-
map.put("address1", address1);
-
Address address2 = new Address("江西省","南昌市","阳明路","330004");
-
map.put("address2", address2);
-
Address address3 = new Address("陕西省","西安市","长安南路","710114");
-
map.put("address3", address3);
-
String jsonText = JSON.toJSONString(map, true);
-
System.out.println("map2Json()方法:jsonText=="+jsonText);
-
-
}
-
-
-
-
public static void main(String[] args)
-
{
-
FastJsonTest1 test = new FastJsonTest1();
-
-
test.array2Json();
-
-
-
test.json2Array();
-
-
-
test.array2Json2();
-
-
-
test.json2Array2();
-
-
-
test.list2Json();
-
-
-
test.list2Json2();
-
-
-
test.map2Json();
-
}
-
}
控制台输出结果:
-
array2Json()方法:jsonText==["bill","green","maks","jim"]
-
json2Array()方法:jsonArr==["bill","green","maks","jim"]
-
array2Json2()方法:jsonText==[{
-
"age":16,
-
"id":"P001",
-
"name":"TOM"
-
},{
-
"age":21,
-
"id":"P002",
-
"name":"JACKSON"
-
},{
-
"age":20,
-
"id":"P003",
-
"name":"MARTIN"
-
}]
-
json2Array2()方法:jsonArr==[{"age":16,"id":"P001","name":"TOM"},{"age":21,"id":"P002","name":"JACKSON"},{"age":20,"id":"P003","name":"MARTIN"}]
-
list2Json()方法:jsonText==[
-
{
-
"age":16,
-
"id":"L001",
-
"name":"TOM"
-
},
-
{
-
"age":21,
-
"id":"L002",
-
"name":"JACKSON"
-
},
-
{
-
"age":20,
-
"id":"L003",
-
"name":"MARTIN"
-
}
-
]
-
list2Json2()方法:jsonText==[
-
{
-
"address":{
-
"city":"深圳市",
-
"post":"580053",
-
"province":"广东省",
-
"street":"科苑南路"
-
},
-
"age":16,
-
"id":"L001",
-
"name":"TOM"
-
},
-
{
-
"address":{
-
"city":"南昌市",
-
"post":"330004",
-
"province":"江西省",
-
"street":"阳明路"
-
},
-
"age":21,
-
"id":"L002",
-
"name":"JACKSON"
-
},
-
{
-
"address":{
-
"city":"西安市",
-
"post":"710114",
-
"province":"陕西省",
-
"street":"长安南路"
-
},
-
"age":20,
-
"id":"L003",
-
"name":"MARTIN"
-
}
-
]
-
map2Json()方法:jsonText=={"address1":{
-
"city":"深圳市",
-
"post":"580053",
-
"province":"广东省",
-
"street":"科苑南路"
-
},"address2":{
-
"city":"南昌市",
-
"post":"330004",
-
"province":"江西省",
-
"street":"阳明路"
-
},"address3":{
-
"city":"西安市",
-
"post":"710114",
-
"province":"陕西省",
-
"street":"长安南路"
-
}}
附:javabean类 User.java
-
package fastJson.test;
-
-
import java.io.Serializable;
-
-
public class User implements Serializable {
-
-
private static final long serialVersionUID = 1L;
-
-
private String id;
-
private String name;
-
private int age;
-
private Address address;
-
-
public User() {
-
super();
-
}
-
-
public User(String id, String name, int age) {
-
super();
-
this.id = id;
-
this.name = name;
-
this.age = age;
-
}
-
-
public User(String id, String name, int age, Address address)
-
{
-
super();
-
this.id = id;
-
this.name = name;
-
this.age = age;
-
this.address = address;
-
}
-
-
public int getAge() {
-
return age;
-
}
-
-
public void setAge(int age) {
-
this.age = age;
-
}
-
-
public String getId() {
-
return id;
-
}
-
-
public void setId(String id) {
-
this.id = id;
-
}
-
-
public String getName() {
-
return name;
-
}
-
-
public void setName(String name) {
-
this.name = name;
-
}
-
-
public Address getAddress()
-
{
-
return address;
-
}
-
-
public void setAddress(Address address)
-
{
-
this.address = address;
-
}
-
-
}
Address.java
-
package fastJson.test;
-
-
import java.io.Serializable;
-
-
public class Address implements Serializable
-
{
-
private static final long serialVersionUID = 1L;
-
-
private String province;
-
private String city;
-
private String street;
-
private String post;
-
-
public Address()
-
{
-
super();
-
}
-
-
public Address(String province, String city, String street, String post)
-
{
-
super();
-
this.province = province;
-
this.city = city;
-
this.street = street;
-
this.post = post;
-
}
-
-
public String getCity()
-
{
-
return city;
-
}
-
-
public void setCity(String city)
-
{
-
this.city = city;
-
}
-
-
public String getPost()
-
{
-
return post;
-
}
-
-
public void setPost(String post)
-
{
-
this.post = post;
-
}
-
-
public String getProvince()
-
{
-
return province;
-
}
-
-
public void setProvince(String province)
-
{
-
this.province = province;
-
}
-
-
public String getStreet()
-
{
-
return street;
-
}
-
-
public void setStreet(String street)
-
{
-
this.street = street;
-
}
-
-
}
-
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9399028/viewspace-1821151/
,如需转载,请注明出处,否则将追究法律责任。