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 反向代理 如何在高效的在一台服务器部署多个站点

