分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

fastjson(转)

发布时间:2023-09-06 01:06责任编辑:蔡小小关键词:jsjson

博客地址:http://blog.csdn.NET/shulianghan/article/details/41011605

fastjson 源码地址:

--GitHub:https://github.com/alibaba/fastjson;

--示例源码:https://github.com/alibaba/fastjson/wiki/Samples-DataBind;

--Jar下载:http://sourceforge.net/projects/fastjson/;

总结 :

JavaBean <--> json 字符串 <--> JSONObject 互相转化

json 字符串 与javaBean 对象 互相转化 :

--json 字符串 ->JavaBean 对象:JSON.parseObject(String text, Class<Student> clazz)方法, 示例 -Student student = JSON.parseObject(json_student, Student.class);

--Java Bean 对象 -> json 字符串:JSON.toJSONString(Object object, boolean prettyFormat)方法, 示例 -String format_json = JSON.toJSONString(student, true);

Java Bean 对象 与 JSONObject 对象 互相转化:

--Java Bean 对象 -> JSONObject 对象:JSON.toJSON(Object javaObject)方法, 示例 -JSONObject object = (JSONObject) JSON.toJSON(student_s);

--JSONObject 对象 -> Java Bean 对象 (无直接方法实现):JSON.parseObject(jsonObject.toString(), Class<T> clazz)方法,先转成字符串, 再转成 Java Bean;

json 字符串 与 JSONObject 对象互相转化:

--json 字符串 -> JSONObject 对象:JSON.parseObject(String text)方法, 示例 -JSONObject object = JSON.parseObject(json_student);

--JSONObject 对象 -> json 字符串:JSONObject.toString()方法, 示例 -object.toString();

Java Bean 对象 <--> json 字符串 <--> JSONArray 对象 互相转化

json 字符串 与 Java 集合 互相转化:

--json 字符串 -> Java 集合:JSON.parseObject(String text, Class<Student> clazz)方法,示例 -List<Student> students = JSON.parseArray(json_array, Student.class);

--Java 集合 -> json 字符串:toJSONString(Object object, boolean prettyFormat)方法, 示例 -String json_array = JSON.toJSONString(students, true);

Java 集合 与 JSONArray 对象 互相转化:

--Java 集合 -> JSONArray 对象:JSON.toJSON(Object javaObject)方法, 示例 -JSONArray array = (JSONArray) JSON.toJSON(students);

--JSONArray 对象 -> Java 集合(没有直接转化方法) : 先转成 json 字符串, 再转成 Java 集合;

json 字符串 与 JSONArray 对象 互相转化:

--json 字符串 -> JSONArray 对象:JSON.parseArray(String text)方法, 示例 -JSONArray array = JSON.parseArray(json_array);

--JSONArray 对象 -> json 字符串:jsonArray.toString() 方法;

一. JSON 简介

1. JSON 结构

(1) 对象

对象简介:

--格式: 对象定义在 大括号 {} 中, 中间的项由 逗号 隔开, 每个项目都是 key : value 进行的;

--示例:{"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1};

--格式化后的:

[plain]view plaincopy
  1. {
  2. "age":42,
  3. "id":1,
  4. "male":true,
  5. "name":"SherlockHolmes",
  6. "schoolId":1
  7. }



(2) 数组

数组简介:

--数组格式: 数组放在 中括号[] 中, 在 [] 中有 n 个 {} 元素, 每个元素用 逗号 隔开;

--数组示例:[{"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"John Watson","schoolId":1}] ;

--输出格式化后的数组:

[plain]view plaincopy
  1. [
  2. {
  3. "age":42,
  4. "id":1,
  5. "male":true,
  6. "name":"SherlockHolmes",
  7. "schoolId":1
  8. },
  9. {
  10. "age":42,
  11. "id":2,
  12. "male":false,
  13. "name":"JohnWatson",
  14. "schoolId":1
  15. }
  16. ]

二. JSON 相关用法

1.JSON.toJSONString 方法

(1) JSON.toJSONString(Object object)方法简介

JSON.toJSONString(Object object)方法简介:

--方法定义:public static final String toJSONString(Object object);

--方法作用: 将 java bean 转为 json 字符串;

--方法位置:String com.alibaba.fastjson.JSON.toJSONString(Object object);

--参数介绍: Object object -> 要转换的实体类对象;

JSON.toJSONString(Object object, boolean prettyFormat)方法简介:

--方法定义:public static final String toJSONString(Object object, boolean prettyFormat);

--方法作用:将 java bean 转为 json 字符串, 并将 json 字符串格式化;

--方法位置:String com.alibaba.fastjson.JSON.toJSONString(Object object, boolean prettyFormat);

--参数介绍:Object object-> 要转换的实体类对象,boolean prettyFormat-> 是否将 json 字符串格式化 如果 false 与 上面的方法作用相同;

(2) JSON.toJSONString(Object object) 和 JSON.toJSONString(Object object, boolean prettyFormat)方法使用示例

JavaBean 类定义:

[java]view plaincopy
  1. packagecn.org.octopus.fastjson.beans;
  2. publicclassStudent{
  3. privateintid;
  4. privateStringname;
  5. privateintage;
  6. privatebooleanisMale;
  7. privateintschoolId;
  8. publicStudent(){
  9. super();
  10. }
  11. publicStudent(intid,Stringname,intage,booleanisMale,intschoolId){
  12. super();
  13. this.id=id;
  14. this.name=name;
  15. this.age=age;
  16. this.isMale=isMale;
  17. this.schoolId=schoolId;
  18. }
  19. publicintgetId(){
  20. returnid;
  21. }
  22. publicvoidsetId(intid){
  23. this.id=id;
  24. }
  25. publicStringgetName(){
  26. returnname;
  27. }
  28. publicvoidsetName(Stringname){
  29. this.name=name;
  30. }
  31. publicintgetAge(){
  32. returnage;
  33. }
  34. publicvoidsetAge(intage){
  35. this.age=age;
  36. }
  37. publicbooleanisMale(){
  38. returnisMale;
  39. }
  40. publicvoidsetMale(booleanisMale){
  41. this.isMale=isMale;
  42. }
  43. publicintgetSchoolId(){
  44. returnschoolId;
  45. }
  46. publicvoidsetSchoolId(intschoolId){
  47. this.schoolId=schoolId;
  48. }
  49. @Override
  50. publicStringtoString(){
  51. return"Student[,name="+name+",age="+age
  52. +",isMale="+isMale+",school]";
  53. }
  54. }

main 函数代码:

[java]view plaincopy
  1. publicstaticvoidmain(String[]args){
  2. //创建一个Student对象
  3. Studentstudent=newStudent(1,"SherlockHolmes",42,true,1);
  4. //将Student对象转为json字符串
  5. Stringjson=JSON.toJSONString(student);
  6. //打印json字符串
  7. System.out.println(json);
  8. //将Student对象转为json字符串,这个字符串是经过格式化的
  9. Stringformat_json=JSON.toJSONString(student,true);
  10. //打印格式化的json
  11. System.out.println(format_json);
  12. }


执行结果:

--第一个结果: 该结果没有经过格式化, 只是将 json 字符串输出;

--第二个结果: 该结果按照 json 的格式进行格式化了;

[plain]view plaincopy
  1. {"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1}
  2. {
  3. "age":42,
  4. "id":1,
  5. "male":true,
  6. "name":"SherlockHolmes",
  7. "schoolId":1
  8. }



2.JSON.toJSON 方法

(1)JSON.toJSON(Object javaObject) 方法简介

方法简介:

--方法定义:public static final Object toJSON(Object javaObject);

--方法作用: 将java bean 对象转为 JSONObject 对象, 或者将集合 转为 JSONArray 对象;

--方法位置:Object com.alibaba.fastjson.JSON.toJSON(Object javaObject);

--参数介绍:Object javaObject->java bean 对象或者集合;

关键代码解析:

--Java Bean 转 JSONObject:JSONObject object = (JSONObject) JSON.toJSON(student_s);

--Java 集合 转 JSONArray:JSONArray array = (JSONArray) JSON.toJSON(students);

JSONOject 和 JSONArray 打印: 这两种对象 打印本身, toString() 以及 toJSONString() 都是相同的结果, 详见下面的示例;

(2) 示例

Student 实体类: 在 一. 1. (2) 中有定义, 直接使用该实体类即可;

Main() 示例:

[java]view plaincopy
  1. publicclassMain{
  2. //该字符串是{"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1}注意将"转为\"
  3. publicstaticfinalStringjson_student="{\"age\":42,\"id\":1,\"male\":true,\"name\":\"SherlockHolmes\",\"schoolId\":1}";
  4. publicstaticvoidmain(String[]args){
  5. //创建一个Student对象
  6. Studentstudent_s=newStudent(1,"SherlockHolmes",42,true,1);
  7. //将javabean对象转为JSONObject对象
  8. JSONObjectobject=(JSONObject)JSON.toJSON(student_s);
  9. //JSONObject直接打印,打印toString()或者toJSONString()输出结果是一样的
  10. System.out.println(object+"--打印JSONOBject本身");
  11. System.out.println(object.toString()+"--打印JSONOBject.toString()");
  12. System.out.println(object.toJSONString()+"--打印JSONOBject.toJSONString()");
  13. //再创建一个Student对象
  14. Studentstudent_j=newStudent(2,"JohnWatson",42,false,1);
  15. //将两个Student对象放到List集合中
  16. List<Student>students=newArrayList<Student>();
  17. students.add(student_s);
  18. students.add(student_j);
  19. //将List集合对象转为JSONArray对象
  20. JSONArrayarray=(JSONArray)JSON.toJSON(students);
  21. //JSONArray直接打印,打印toString()或者toJSONString()输出结果是一样的
  22. System.out.println(array+"--打印JSONArray本身");
  23. System.out.println(array.toString()+"--打印JSONArray.toString()");
  24. System.out.println(array.toJSONString()+"--打印JSONArray.toJSONString()");
  25. }


执行结果:

[plain]view plaincopy
  1. {"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1}--打印JSONOBject本身
  2. {"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1}--打印JSONOBject.toString()
  3. {"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1}--打印JSONOBject.toJSONString()
  4. [{"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"JohnWatson","schoolId":1}]--打印JSONArray本身
  5. [{"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"JohnWatson","schoolId":1}]--打印JSONArray.toString()
  6. [{"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"JohnWatson","schoolId":1}]--打印JSONArray.toJSONString()



3.JSON.parseArray 方法

(1)JSON.parseArray 方法简介

JSONArray parseArray(String text)方法简介:

--方法定义:public static final JSONArray parseArray(String text);

--方法作用: 将 json 字符串转为 JSONArray 对象;

--方法位置:JSONArray com.alibaba.fastjson.JSON.parseArray(String text);

--参数介绍:String text->json 字符串;

<T> List<T> parseArray(String text, Class<T> clazz) 方法简介:

--方法定义:public static final <T> List<T> parseArray(String text, Class<T> clazz);

--方法作用: 将 json 字符串转为 List 集合;

--方法位置:<T> List<T> com.alibaba.fastjson.JSON.parseArray(String text, Class<T> clazz);

--参数介绍:String text->json 字符串, Class<T> clazz->集合元素类型;

(2) 代码示例

Main() 代码:

[java]view plaincopy
  1. //字符串内容[{"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"JohnWatson","schoolId":1}]
  2. publicstaticfinalStringjson_array="[{\"age\":42,\"id\":1,\"male\":true,\"name\":\"SherlockHolmes\",\"schoolId\":1},{\"age\":42,\"id\":2,\"male\":false,\"name\":\"JohnWatson\",\"schoolId\":1}]";
  3. publicstaticvoidmain(String[]args){
  4. //将json字符串转为JSONArray对象
  5. JSONArrayarray=JSON.parseArray(json_array);
  6. //打印JSONArray对象
  7. System.out.println(array);
  8. //将json字符串转为List集合
  9. List<Student>students=JSON.parseArray(json_array,Student.class);
  10. //打印List集合大小
  11. System.out.println("students.size():"+students.size());
  12. //遍历List集合中的元素
  13. for(Studentstudent:students)
  14. System.out.println(student.toString());
  15. }


执行结果:

[plain]view plaincopy
  1. [{"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"JohnWatson","schoolId":1}]
  2. students.size():2
  3. Student[id=1,name=SherlockHolmes,age=42,isMale=true,schoolId=1]
  4. Student[id=2,name=JohnWatson,age=42,isMale=false,schoolId=1]



4. JSON.parseObject 方法

(1)JSON.parseObject 方法简介

JSONObject parseObject(String text) 方法简介:

--方法定义:public static final JSONObject parseObject(String text);

--方法作用: 将 json 字符串类型转化为 JSONObject 对象;

--方法位置:JSONObject com.alibaba.fastjson.JSON.parseObject(String text);

--参数介绍:String text->json 字符串;

<T> T parseObject(String text, Class<T> clazz) 方法简介:

--方法定义:public static final <T> T parseObject(String text, Class<T> clazz);

--方法作用: 将 json 字符串转为指定类型的 java bean 对象;

--方法位置:<T> T com.alibaba.fastjson.JSON.parseObject(String text, Class<T> clazz);

--参数介绍:String text->json 字符串,Class<T> clazz->要转化的 java bean 对象类型;


(2) 方法示例

Main() 方法:

[java]view plaincopy
  1. //该字符串是{"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1}注意将"转为\"
  2. publicstaticfinalStringjson_student="{\"age\":42,\"id\":1,\"male\":true,\"name\":\"SherlockHolmes\",\"schoolId\":1}";
  3. publicstaticvoidmain(String[]args){
  4. //将json字符串转为JSONObject对象
  5. JSONObjectobject=JSON.parseObject(json_student);
  6. //打印JSONObject对象
  7. System.out.println(object);
  8. //将json字符串转为Student对象
  9. Studentstudent=JSON.parseObject(json_student,Student.class);
  10. //打印Student对象
  11. System.out.println(student.toString());
  12. }


执行结果:

[plain]view plaincopy
  1. {"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1}
  2. Student[id=1,name=SherlockHolmes,age=42,isMale=true,schoolId=1]



5.JSON.parse 方法

(1)Object parse(String text) 方法简介

方法简介:

--方法定义:public static final Object parse(String text);

--方法作用: 将 json 字符串转为 JSONObject 或者 JSONArray 对象;

--方法位置:Object com.alibaba.fastjson.JSON.parse(String text);

--参数介绍:String text->json 字符串;

(2) 代码示例

Main() 方法:

[java]view plaincopy
  1. //该字符串是{"age":42,"id":1,"male":true,"name":"SherlockHolmes","schoolId":1}注意将"转为\"
  2. publicstaticfinalStringjson_student="{\"age\":42,\"id\":1,\"male\":true,\"name\":\"SherlockHolmes\",\"schoolId\":1}";
  3. publicstaticvoidmain(String[]args){
  4. //将json字符串转为JSONObect对象
  5. JSONObjectobject=(JSONObject)JSON.parse(json_student);
  6. //打印JSONObject对象
  7. System.out.println(object);
  8. //将json字符串转为JSONArray对象
我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved