FastJson的使用

转载 2015年07月10日 10:36:23


在工作中,经常客服端需要和服务端进行通信,目前很多项目都采用JSON的方式进行数据传输,简单的参数可以通过手动拼接JSON字符串,但如果请求的参数过多,采用手动拼接JSON字符串,出错率就非常大了。并且工作效率也特别低。

我在网上看了一些开源的JSON框架,比如Google提供的Gson,Jackson,FastJson等框架。

经过测试,个人觉得FastJson执行效率比较高,而且简单易用。
FastJson不依赖于第三方包, 直接可以运行在Java JDK1.5之上,FastJson完全支持http://json.org的标准,支持各种JDK类型,包括基本类型、JavaBean、Collection、Map、Enum、泛型等
还支持循环引用。
FastJson项目是开源的:Fastjson代码托管在github.org上,项目地址是 https://github.com/AlibabaTech/fastjson

一个JSON库涉及的最基本功能就是序列化和反序列化。Fastjson支持java bean的直接序列化。使用com.alibaba.fastjson.JSON这个类进行序列化和反序列化。

 

一。简单的序列化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
pubic class UserInfo implements Serializable{ 
 private String name; 
 private int age; 
 public void setName(String name){ 
  this.name=name; 
 
 public String getName(){ 
  return name; 
 
    
 public void setAge(int age){ 
  this.age=age; 
 
 public int getAge(){ 
  return age; 
 
}  
   
public class TestOne{ 
    
 public static void main(String[] args){ 
  UserInfo info=new UserInfo(); 
  info.setName("zhangsan"); 
  info.setAge(24); 
  //将对象转换为JSON字符串 
  String str_json=JSON.toJSONString(info); 
  System.out.println("JSON="+str_json); 
 
   
}

二.复杂的数据类型

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public static void test2() { 
   
  HashMap<String, Object> map = new HashMap<String, Object>(); 
  map.put("username""zhangsan"); 
  map.put("age"24); 
  map.put("sex""男"); 
     
  //map集合 
  HashMap<String, Object> temp = new HashMap<String, Object>(); 
  temp.put("name""xiaohong"); 
  temp.put("age""23"); 
  map.put("girlInfo", temp); 
   
  //list集合 
  List<String> list = new ArrayList<String>(); 
  list.add("爬山"); 
  list.add("骑车"); 
  list.add("旅游"); 
  map.put("hobby", list); 
     
  /*JSON 序列化,默认序列化出的JSON字符串中键值对是使用双引号,如果需要单引号的JSON字符串, [eg:String jsonString = JSON.toJSONString(map,   SerializerFeature.UseSingleQuotes);]
   *fastjson序列化时可以选择的SerializerFeature有十几个属性,你可以按照自己的需要去选择使用。 
   */ 
  String jsonString = JSON.toJSONString(map); 
  System.out.println("JSON=" + jsonString); 
   
}

三.反序列化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void test3(){ 
   
 String json="{\"name\":\"chenggang\",\"age\":24}"
 //反序列化 
 UserInfo userInfo=JSON.parseObject(json,UserInfo.class); 
 System.out.println("name:"+userInfo.getName()+", age:"+userInfo.getAge()); 
    
/**泛型的反序列化*/ 
public static void test4(){ 
  String json="{\"user\":{\"name\":\"zhangsan\",\"age\":25}}"
  Map<String, UserInfoBean> map = JSON.parseObject(json, new TypeReference<Map<String, UserInfoBean>>(){}); 
  System.out.println(map.get("user")); 
 }

//同理, json字符串中可以嵌套各种数据类型。

 

四.日期格式化

?
1
2
3
4
5
6
7
8
9
10
11
public void test5(){ 
   
  Date date=new Date();   
  //输出毫秒值 
  System.out.println(JSON.toJSONString(date)); 
  //默认格式为yyyy-MM-dd HH:mm:ss   
  System.out.println(JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat)); 
  //根据自定义格式输出日期  
  System.out.println(JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat)); 
   
}
在工作中,经常客服端需要和服务端进行通信,目前很多项目都采用JSON的方式进行数据传输,简单的参数可以通过手动拼接JSON字符串,但如果请求的参数过多,采用手动拼接JSON字符串,出错率就非常大了。并且工作效率也特别低。

我在网上看了一些开源的JSON框架,比如Google提供的Gson,Jackson,FastJson等框架。

经过测试,个人觉得FastJson执行效率比较高,而且简单易用。
FastJson不依赖于第三方包, 直接可以运行在Java JDK1.5之上,FastJson完全支持http://json.org的标准,支持各种JDK类型,包括基本类型、JavaBean、Collection、Map、Enum、泛型等
还支持循环引用。
FastJson项目是开源的:Fastjson代码托管在github.org上,项目地址是 https://github.com/AlibabaTech/fastjson

一个JSON库涉及的最基本功能就是序列化和反序列化。Fastjson支持java bean的直接序列化。使用com.alibaba.fastjson.JSON这个类进行序列化和反序列化。

 

一。简单的序列化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
pubic class UserInfo implements Serializable{ 
 private String name; 
 private int age; 
 public void setName(String name){ 
  this.name=name; 
 
 public String getName(){ 
  return name; 
 
    
 public void setAge(int age){ 
  this.age=age; 
 
 public int getAge(){ 
  return age; 
 
}  
   
public class TestOne{ 
    
 public static void main(String[] args){ 
  UserInfo info=new UserInfo(); 
  info.setName("zhangsan"); 
  info.setAge(24); 
  //将对象转换为JSON字符串 
  String str_json=JSON.toJSONString(info); 
  System.out.println("JSON="+str_json); 
 
   
}

二.复杂的数据类型

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public static void test2() { 
   
  HashMap<String, Object> map = new HashMap<String, Object>(); 
  map.put("username""zhangsan"); 
  map.put("age"24); 
  map.put("sex""男"); 
     
  //map集合 
  HashMap<String, Object> temp = new HashMap<String, Object>(); 
  temp.put("name""xiaohong"); 
  temp.put("age""23"); 
  map.put("girlInfo", temp); 
   
  //list集合 
  List<String> list = new ArrayList<String>(); 
  list.add("爬山"); 
  list.add("骑车"); 
  list.add("旅游"); 
  map.put("hobby", list); 
     
  /*JSON 序列化,默认序列化出的JSON字符串中键值对是使用双引号,如果需要单引号的JSON字符串, [eg:String jsonString = JSON.toJSONString(map,   SerializerFeature.UseSingleQuotes);]
   *fastjson序列化时可以选择的SerializerFeature有十几个属性,你可以按照自己的需要去选择使用。 
   */ 
  String jsonString = JSON.toJSONString(map); 
  System.out.println("JSON=" + jsonString); 
   
}

三.反序列化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void test3(){ 
   
 String json="{\"name\":\"chenggang\",\"age\":24}"
 //反序列化 
 UserInfo userInfo=JSON.parseObject(json,UserInfo.class); 
 System.out.println("name:"+userInfo.getName()+", age:"+userInfo.getAge()); 
    
/**泛型的反序列化*/ 
public static void test4(){ 
  String json="{\"user\":{\"name\":\"zhangsan\",\"age\":25}}"
  Map<String, UserInfoBean> map = JSON.parseObject(json, new TypeReference<Map<String, UserInfoBean>>(){}); 
  System.out.println(map.get("user")); 
 }

//同理, json字符串中可以嵌套各种数据类型。

 

四.日期格式化

?
1
2
3
4
5
6
7
8
9
10
11
public void test5(){ 
   
  Date date=new Date();   
  //输出毫秒值 
  System.out.println(JSON.toJSONString(date)); 
  //默认格式为yyyy-MM-dd HH:mm:ss   
  System.out.println(JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat)); 
  //根据自定义格式输出日期  
  System.out.println(JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat)); 
   
}

fastjson使用

  • 2016年01月21日 11:20
  • 457KB
  • 下载

使用fastjson进行json字符串和List的转换

使用fastjson进行自定义类的列表和字符串转换   1.环境   jdk1.8,fastjson   2.pom.xml...

FastJson 和 Gson的使用简单方便

  • 2016年08月25日 12:25
  • 26.12MB
  • 下载

fastjson使用

  • 2016年01月20日 11:14
  • 1.13MB
  • 下载

fastjson使用过程中的坑

最近在工作中用到了fastjson,遇到了一些坑,在这里总结一下。 简介 首先,介绍一下fastjson。fastjson是由alibaba开源的一套json处理器。与其他json处理器(如G...
  • zgzczzw
  • zgzczzw
  • 2017年05月16日 21:31
  • 2438

gson,fastjson,jackson简单使用

  • 2015年08月13日 16:42
  • 9.32MB
  • 下载

fastjson jar 使用详解 实例

  • 2017年11月16日 10:38
  • 357KB
  • 下载

fastjson序列化(对象转字符串)时字段的大小写问题与我自己的使用方案

因为现在公司的后台是.net,而他们的命名方式并不是Java的JavaBean,。这时如果还是按照以前的方式实体的创建使用JavaBean的方式,在序列化的时候就会出现很多不必要的麻烦-———当我们需...
  • z2wenfa
  • z2wenfa
  • 2016年11月27日 22:12
  • 2347
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FastJson的使用
举报原因:
原因补充:

(最多只允许输入30个字)