java中fastjson生成和解析json数据(序列化和反序列化数据)

发布时间 - 2026-01-10 22:57:01    点击率:

本文讲解2点

1. fastjson生成和解析json数据

(举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)

2.通过一个android程序测试fastjson的用法。

fastjson简介:

Fastjson是一个Java语言编写的高性能功能完善的JSON库。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持JDK 5、JDK 6、Android、阿里云手机等环境。

一. fastjson生成json字符串(JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)

String jsonStrng = JSON.toJSONString(object);

二. fastjson 解析json字符串为四种类型

1. JavaBean

Person person = JSON.parseObject(jsonString, Person.class);

2. List<JavaBean>

List<Person> listPerson =JSON.parseArray(jsonString, Person.class);

3. List<String>

List<String> listString = JSON.parseArray(jsonString, String.class);

4. List<Map<String,Object>>

复制代码 代码如下:
List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){}); 

(注意:此处可看出fastjson反射机制比gson更准确, id = 1001 通过fastjson反射仍是 id = 1001 , 而通过gson反射结果 为 id =1001.0 , 

JSON解析器fastjson(阿里巴巴出品,版本1.1.26),如果定义了JSONObject为{"JACKIE_ZHANG":"张学友","ANDY_LAU":"刘德华","LIMING":"黎明","Aaron_Kwok":"郭富城"},那么读取值时,KEY顺序无序,测试代码:

import comalibabafastjsonJSONObject; 
/** 
 * Created by wangzhenfei on 14-4- 
 */ 
public class FastJsonTest { 
 public static void main(String[] args){ 
  String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ; 
 
 
  //做5次测试 
  for(int i=0,j=5;i<j;i++) 
  { 
   JSONObject jsonObject = JSONObjectparseObject(jsonStr) ; 
   for(javautilMapEntry<String,Object> entry:jsonObjectentrySet()){ 
    Systemoutprint(entrygetKey()+"-"+entrygetValue()+"\t"); 
   } 
   Systemoutprintln();//用来换行 
  } 
 } 
} 

运行结果:

LIMING-黎明 Aaron_Kwok-郭富城JACKIE_ZHANG-张学友ANDY_LAU-刘德华 
Aaron_Kwok-郭富城 ANDY_LAU-刘德华LIMING-黎明JACKIE_ZHANG-张学友 
Aaron_Kwok-郭富城 JACKIE_ZHANG-张学友ANDY_LAU-刘德华LIMING-黎明 
LIMING-黎明 ANDY_LAU-刘德华JACKIE_ZHANG-张学友Aaron_Kwok-郭富城 
JACKIE_ZHANG-张学友 LIMING-黎明ANDY_LAU-刘德华Aaron_Kwok-郭富城 

解决办法:定义为JSONArray,代码如下:

import comalibabafastjsonJSONArray; 
 
/** 
 * Created by wangzhenfei on 14-4- 
 */ 
public class FastJsonTest { 
 public static void main(String[] args){ 
  String jsonStr = "[{\"JACKIE_ZHANG\":\"张学友\"},{\"ANDY_LAU\":\"刘德华\"},{\"LIMING\":\"黎明\"},{\"Aaron_Kwok\":\"郭富城\"}]" ; 
  //做5次测试 
  for(int i=0,j=5;i<j;i++) 
  { 
   JSONArray jsonArray = JSONArrayparseArray(jsonStr); 
 
   for(int k=0;k<jsonArraysize();k++){ 
    Systemoutprint(jsonArrayget(k) + "\t"); 
   } 
   Systemoutprintln();//用来换行 
  } 
 } 
} 

运行结果为:

{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 

如果就想要定义为JSONObject,而不是JSONArray,可以选用其他JSON解析器,个人推荐使用google的gson,文档明显比fastjson好很多(从这里可以看出阿里巴巴和谷歌的差距):

import comgooglegsonJsonElement; 
import comgooglegsonJsonObject; 
import comgooglegsonJsonParser; 
 
/** 
 * Created by wangzhenfei on 14-4- 
 */ 
public class FastJsonTest { 
 public static void main(String[] args){ 
  String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ; 
  //做5次测试 
  for(int i=0,j=5;i<j;i++) 
  { 
   JsonObject jsonObject = (JsonObject) new JsonParser()parse(jsonStr); 
   for(javautilMapEntry<String,JsonElement> entry:jsonObjectentrySet()){ 
    Systemoutprint(entrygetKey()+"-"+entrygetValue()+"\t"); 
   } 
   Systemoutprintln();//用来换行 
  } 
 } 
} 

运行结果:

JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"  
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"  
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"  
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"  
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# fastjson解析json数据  # fastjson生成json数据  # fastjson解析  # Java序列化反序列化原理及漏洞解决方案  # JAVA序列化和反序列化的底层实现原理解析  # Java对象的XML序列化与反序列化实例解析  # java 序列化与反序列化的实例详解  # Java 序列化和反序列化实例详解  # Java序列化与反序列化  # 阿里巴巴  # 换行  # 是一个  # 推荐使用  # 仍是  # 可以看出  # 四种  # 高性能  # 解决办法  # 大家多多  # 更准确  # 而不是  # 文档  # 云手  # 超越了  # 提升到  # protocol  # Android  # pre  # brush 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Laravel如何使用Eloquent进行子查询  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Linux系统命令中tree命令详解  青岛网站建设如何选择本地服务器?  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Laravel怎么清理缓存_Laravel optimize clear命令详解  Laravel怎么实现验证码(Captcha)功能  html5的keygen标签为什么废弃_替代方案说明【解答】  PythonWeb开发入门教程_Flask快速构建Web应用  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel如何实现文件上传和存储?(本地与S3配置)  jQuery 常见小例汇总  Laravel怎么使用artisan命令缓存配置和视图  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  如何在云主机上快速搭建网站?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何正确下载安装西数主机建站助手?  如何快速登录WAP自助建站平台?  JS实现鼠标移上去显示图片或微信二维码  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel如何处理和验证JSON类型的数据库字段  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  如何快速搭建FTP站点实现文件共享?  如何利用DOS批处理实现定时关机操作详解  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  教学论文网站制作软件有哪些,写论文用什么软件 ?  微信小程序 闭包写法详细介绍  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  利用vue写todolist单页应用  如何在云虚拟主机上快速搭建个人网站?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  Python正则表达式进阶教程_复杂匹配与分组替换解析  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  深圳网站制作的公司有哪些,dido官方网站?  Swift中循环语句中的转移语句 break 和 continue  长沙做网站要多少钱,长沙国安网络怎么样?  HTML 中动态设置元素 name 属性的正确语法详解  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点