微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

fastJson在java后台转换json格式数据探究一

什么是JSON?

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLanguage,StandardECMA-2623rdEdition-December1999一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。

现在我们就来研究一下fastJson

Fastjson是国内著名的电子商务互联网公司阿里巴巴内部开发的用于java后台处理json格式数据的一个工具包包括序列化反序列化两部分,它具备如下特征:

1.速度最快,测试表明,fastjson具有极快的性能,超越任其他的javajsonparser包括自称最快的jackson

2.功能强大,完全支持javabean、集合、Map、日期、Enum支持范型,支持自省。

3.无依赖,能够直接运行在JavaSE5.0以上版本

4.支持Android

5.开源(Apache2.0)

这是fastJson的网址:http://code.alibabatech.com/wiki/display/FastJSON/Overview

其中包含了json数据处理的教程,jar下载地址,example样例等。


下面给出fastJson处理json数据格式的代码样例:

[java] view plain copy
  1. packagefastJson.test;
  2. importcom.alibaba.fastjson.JSON;
  3. importcom.alibaba.fastjson.JSONObject;
  4. importcom.alibaba.fastjson.serializer.SerializerFeature;
  5. publicclassFastJsonTest
  6. {
  7. /**
  8. *序列化
  9. */
  10. voidtoJsonString()
  11. Useruser=newUser("testFastJson001","maks",105);
  12. Stringtext=JSON.toJSONString(user);
  13. System.out.println("toJsonString()方法:text="+text);
  14. //输出结果:text={"age":105,"id":"testFastJson001","name":"maks"}
  15. }
  16. /**
  17. *反序列化为json对象
  18. */
  19. voidparseJsonObject()
  20. {
  21. Stringtext="{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";
  22. JSONObjectjson=JSON.parSEObject(text);
  23. System.out.println("parseJsonObject()方法:json=="+json);
  24. //输出结果:json=={"age":105,"name":"maks"}
  25. }
  26. *反序列化为javaBean对象
  27. voidparseBeanObject()
  28. Stringtext="{\"age\":105,\"name\":\"maks\"}";
  29. Useruser=(User)JSON.parSEObject(text,User.class);
  30. System.out.println("parseBeanObject()方法:user=="+user.getId()+","+user.getName()+","+user.getAge());
  31. //输出结果:user==testFastJson001,maks,105
  32. *将javaBean转化为json对象
  33. voidbean2Json()
  34. Useruser=105);
  35. JSONObjectjsonObj=(JSONObject)JSON.toJSON(user);
  36. System.out.println("bean2Json()方法:jsonObj=="+jsonObj);
  37. //输出结果:jsonObj=={"age":105,0); background-color:inherit">*全序列化直接把javabean序列化为json文本之后,能够按照原来的类型反序列化回来。支持全序列化,需要打开SerializerFeature.WriteClassName特性
  38. voidparseJSONAndBeanEachother()
  39. SerializerFeature[]featureArr={SerializerFeature.WriteClassName};
  40. Stringtext=JSON.toJSONString(user,featureArr);
  41. System.out.println("parseJSONAndBeanEachother()方法:text=="+text);
  42. //输出结果:text=={"@type":"fastJson.test.User","age":105,248)"> UseruserObj=(User)JSON.parse(text);
  43. System.out.println("parseJSONAndBeanEachother()方法:userObj=="+userObj.getId()+","+userObj.getName()+","+userObj.getAge());
  44. //输出结果:userObj==testFastJson001,153); font-weight:bold; background-color:inherit">staticvoidmain(String[]args)
  45. FastJsonTesttest=newFastJsontest();
  46. //序列化
  47. test.toJsonString();
  48. //反序列化为json对象
  49. test.parseJsonObject();
  50. //反序列化为javaBean对象
  51. test.parseBeanObject();
  52. //将javaBean转化为json对象
  53. test.bean2Json();
  54. //全序列化
  55. test.parseJSONAndBeanEachother();
  56. }
控制台输出结果:

[html] copy
    toJsonString()方法text={"age":105,"name":"maks"}
  1. parseJsonObject()方法json=={"age":105,"name":"maks"}
  2. parseBeanObject()方法user==testFastJson001,105
  3. bean2Json()方法jsonObj=={"age":105,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> parseJSONAndBeanEachother()方法text=={"@type":"fastJson.test.User",248)"> parseJSONAndBeanEachother()方法userObj==testFastJson001,105


附:javaBean类User.java

copy
    importjava.io.Serializable;
  1. classUserimplementsSerializable{
  2. privatefinallongserialVersionUID=1L;
  3. privateStringid;
  4. privateStringname;
  5. intage;
  6. publicUser(){
  7. super();
  8. publicUser(Stringid,Stringname,intage){
  9. this.id=id;
  10. this.name=name;
  11. this.age=age;
  12. intgetAge(){
  13. returnage;
  14. voidsetAge(intage){
  15. publicStringgetId(){
  16. returnid;
  17. voidsetId(Stringid){
  18. publicStringgetName(){
  19. returnname;
  20. voidsetName(Stringname){
  21. this.name=name;
  22. }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐