配色: 字号:
FastJson简单使用
2017-03-28 | 阅:  转:  |  分享 
  
FastJson简单使用在工作中,经常客服端需要和服务端进行通信,目前很多项目都采用JSON的方式进行数据传输,简单的参数可以通过手动拼接J
SON字符串,但如果请求的参数过多,采用手动拼接JSON字符串,出错率就非常大了。并且工作效率也特别低。我在网上看了一些开源的JS
ON框架,比如Google提供的Gson,Jackson,FastJson等框架。经过测试,个人觉得FastJson执行效率比较高
,而且简单易用。FastJson不依赖于第三方包,直接可以运行在JavaJDK1.5之上,FastJson完全支持http:/
/json.org的标准,支持各种JDK类型,包括基本类型、JavaBean、Collection、Map、Enum、泛型等还支持
循环引用。FastJson项目是开源的:Fastjson代码托管在github.org上,项目地址是https://github
.com/AlibabaTech/fastjsonhttps://github.com/AlibabaTech/fastjson一
个JSON库涉及的最基本功能就是序列化和反序列化。Fastjson支持javabean的直接序列化。使用com.alibaba.
fastjson.JSON这个类进行序列化和反序列化。一。简单的序列化[java]http://blog.csdn.net/yu
anjian19900610/article/details/37737087viewplainhttp://blog.csdn
.net/yuanjian19900610/article/details/37737087copyhttp://blog.csd
n.net/yuanjian19900610/article/details/37737087printhttp://blog.c
sdn.net/yuanjian19900610/article/details/37737087?pubic?class?Use
rInfo?implements?Serializable{???private?String?name;???private?i
nt?age;???public?void?setName(String?name){???this.name=name;???}
???public?String?getName(){???return?name;???}????public?void?set
Age(int?age){???this.age=age;???}???public?int?getAge(){???return
?age;???}??}?public?class?TestOne{????public?static?void?main(Str
ing[]?args){???UserInfo?info=new?UserInfo();???info.setName("zhan
gsan");???info.setAge(24);???//将对象转换为JSON字符串??String?str_json=JSO
N.toJSONString(info);???System.out.println("JSON="+str_json);???}
???}??二.复杂的数据类型[java]http://blog.csdn.net/yuanjian19900610/artic
le/details/37737087viewplainhttp://blog.csdn.net/yuanjian1990061
0/article/details/37737087copyhttp://blog.csdn.net/yuanjian199006
10/article/details/37737087printhttp://blog.csdn.net/yuanjian1990
0610/article/details/37737087?public?static?void?test2()?{????Has
hMap?map?=?new?HashMap();???map.p
ut("username",?"zhangsan");???map.put("age",?24);???map.put("sex"
,?"男");????//map集合??HashMap?temp?=?new?HashMapring,?Object>();???temp.put("name",?"xiaohong");???temp.put("age"
,?"23");???map.put("girlInfo",?temp);????//list集合??List?l
ist?=?new?ArrayList();???list.add("爬山");???list.add("骑车")
;???list.add("旅游");???map.put("hobby",?list);????/JSON序列化,默认序列化出
的JSON字符串中键值对是使用双引号,如果需要单引号的JSON字符串,[eg:String?jsonString?=?JSON.t
oJSONString(map,???SerializerFeature.UseSingleQuotes);]??fastjso
n序列化时可以选择的SerializerFeature有十几个属性,你可以按照自己的需要去选择使用。??/???String?j
sonString?=?JSON.toJSONString(map);???System.out.println("JSON="?
+?jsonString);???}??三.反序列化[java]http://blog.csdn.net/yuanjian199
00610/article/details/37737087viewplainhttp://blog.csdn.net/yuan
jian19900610/article/details/37737087copyhttp://blog.csdn.net/yua
njian19900610/article/details/37737087printhttp://blog.csdn.net/y
uanjian19900610/article/details/37737087?public?void?test3(){????
String?json="{\"name\":\"chenggang\",\"age\":24}";???//反序列化??User
Info?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}}";???MapfoBean>?map?=?JSON.parseObject(json,?new?TypeReference,?UserInfoBean>>(){});???System.out.println(map.get("user"));???}
??//同理,json字符串中可以嵌套各种数据类型。四.日期格式化[java]http://blog.csdn.net/yua
njian19900610/article/details/37737087viewplainhttp://blog.csdn.
net/yuanjian19900610/article/details/37737087copyhttp://blog.csdn
.net/yuanjian19900610/article/details/37737087printhttp://blog.cs
dn.net/yuanjian19900610/article/details/37737087?public?void?test
5(){????Date?date=new?Date();?//输出毫秒值??System.out.println(JSON.to
JSONString(date));???//默认格式为yyyy-MM-dd?HH:mm:ss??System.out.print
ln(JSON.toJSONString(date,?SerializerFeature.WriteDateUseDateFormat));???//根据自定义格式输出日期??System.out.println(JSON.toJSONStringWithDateFormat(date,?"yyyy-MM-dd",?SerializerFeature.WriteDateUseDateFormat));???}??这里举了几个简单的例子,其它特殊要求可以根据FastJson的方法的说明,进行选择。
献花(0)
+1
(本文系关平个人图...首藏)