http://blog.csdn.net/yuanjian19900610/article/details/37737087?utm_source=tuicool&utm_medium=referral
在工作中,经常客服端需要和服务端进行通信,目前很多项目都采用JSON的方式进行数据传输,简单的参数可以通过手动拼接JSON字符串,但如果请求的参数过多,采用手动拼接JSON字符串,出错率就非常大了。并且工作效率也特别低。 我在网上看了一些开源的JSON框架,比如Google提供的Gson,Jackson,FastJson等框架。
经过测试,个人觉得FastJson执行效率比较高,而且简单易用。 FastJson不依赖于第三方包, 直接可以运行在Java JDK1.5之上,FastJson完全支持http://www.52php.cn/tag/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这个类进行序列化和反序列化。
一。简单的序列化
- pubicclassUserInfoimplementsSerializable{
- privateStringname;
- privateintage;
- publicvoidsetName(Stringname){
- this.name=name;
- }
- publicStringgetName(){
- returnname;
- }
- publicvoidsetAge(intage){
- this.age=age;
- }
- publicintgetAge(){
- returnage;
- }
- }
- publicclassTestOne{
- publicstaticvoidmain(String[]args){
- UserInfoinfo=newUserInfo();
- info.setName("zhangsan");
- info.setAge(24);
- Stringstr_json=JSON.toJSONString(info);
- System.out.println("JSON="+str_json);
- }
- }
二.复杂的数据类型
- publicstaticvoidtest2(){
- HashMap<String,Object>map=newHashMap<String,Object>();
- map.put("username","zhangsan");
- map.put("age",24);
- map.put("sex","男");
- HashMap<String,Object>temp=newHashMap<String,Object>();
- temp.put("name","xiaohong");
- temp.put("age","23");
- map.put("girlInfo",temp);
- List<String>list=newArrayList<String>();
- list.add("爬山");
- list.add("骑车");
- list.add("旅游");
- map.put("hobby",list);
- StringjsonString=JSON.toJSONString(map);
- System.out.println("JSON="+jsonString);
- }
三.反序列化
- publicvoidtest3(){
- Stringjson="{"name":"chenggang","age":24}";
- UserInfouserInfo=JSON.parSEObject(json,UserInfo.class);
- System.out.println("name:"+userInfo.getName()+",age:"+userInfo.getAge());
- }
- publicstaticvoidtest4(){
- Stringjson="{"user":{"name":"zhangsan","age":25}}";
- Map<String,UserInfoBean>map=JSON.parSEObject(json,newTypeReference<Map<String,UserInfoBean>>(){});
- System.out.println(map.get("user"));
- }
//同理, json字符串中可以嵌套各种数据类型。
四.日期格式化
- publicvoidtest5(){
- Datedate=newDate();
- System.out.println(JSON.toJSONString(date));
- System.out.println(JSON.toJSONString(date,SerializerFeature.WriteDateUseDateFormat));
- System.out.println(JSON.toJSONStringWithDateFormat(date,"yyyy-MM-dd",SerializerFeature.WriteDateUseDateFormat));
- }
这里举了几个简单的例子, 其它特殊要求可以根据FastJson的方法的说明,进行选择。
例子:
public void onMessage(Message message) { TaskRequest taskrequest = null; TaskResponse taskresponse = null; try { String data = new String(message.getBody(),"UTF-8"); log.info("收到队列消息={}",data); taskrequest = JSON.parSEObject(data,TaskRequest.class); log.info("taskrequest:"+taskrequest); RequestHead requestHead = taskrequest.getHead(); JSONObject body = (JSONObject) taskrequest.getBody(); log.info("body:"+body); if ("快捷".equals(requestHead.getTxnType())) { FastPaySign fastPaySign = JSON.parSEObject(body.toJSONString(),FastPaySign.class); (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|