java之json串转Map的整理
发布时间 - 2025-12-25 00:00:00 点击率:次Java中将JSON字符串转为Map应优先选Jackson,因其生态成熟、Spring Boot原生集成;Fastjson需注意1.x安全漏洞,Gson适用于Android等轻量场景。
Java中将JSON字符串转为Map,核心是选对库、注意类型匹配、处理嵌套结构。最常用的是Jackson和Fastjson,Gson也支持但写法稍不同。
用Jackson转JSON串为Map
Jackson的ObjectMapper默认可将JSON解析为LinkedHashMap(保持字段顺序),适合简单场景。
- 添加Maven依赖:
com.fasterxml.jackson.core:jackson-databind - 基础写法:
ObjectMapper mapper = new ObjectMapper(); Map
map = mapper.readValue(jsonStr, Map.class); - 若JSON含嵌套对象或数组,
Object会自动映射为LinkedHashMap或ArrayList,取值时需向下转型 - 推荐指定泛型以提升类型安全:
Map
map = mapper.readValue(json
Str,
new TypeReference
用Fastjson转JSON串为Map
Fastjson(尤其1.x)对Map转换非常简洁,但要注意版本差异和安全性(2.x已重构,API不兼容)。
- 1.x常用写法:
Map
map = JSON.parseObject(jsonStr, Map.class); - 支持直接解析为
JSONObject(本质是LinkedHashMap子类),便于链式取值:JSONObject obj = JSON.parseObject(jsonStr); String name = obj.getString("name"); - 注意:Fastjson 1.x存在反序列化漏洞,生产环境建议升级到2.x或改用Jackson/Gson
处理常见坑点
无论用哪个库,以下问题高频出现:
-
数字类型自动转成Double:JSON中的
123会被解析为Double而非Integer,比较时用Objects.equals(),或提前转类型 -
空值与null字段:默认不保留null字段;如需保留,Jackson需配置
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)并设为ALWAYS -
中文乱码:确保JSON字符串本身编码为UTF-8,且
ObjectMapper未被错误设置字符集(通常无需手动设) -
日期格式异常:含时间字段时,Jackson默认按ISO格式解析;自定义格式需注册
SimpleModule+StdDateFormat
简单对比与建议
日常开发优先选Jackson:生态成熟、Spring Boot原生集成、文档丰富、安全性高。Fastjson适合老项目快速适配,但新项目不建议引入。Gson语法略啰嗦,但Google维护稳定,适合Android或轻量场景。
基本上就这些,选一个库吃透,比来回切换更高效。
# java
# json
# android
# js
# go
# seo
# 编码
# app
# 中文乱码
# google
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
微信推文制作网站有哪些,怎么做微信推文,急?
javascript中闭包概念与用法深入理解
深圳网站制作的公司有哪些,dido官方网站?
如何在景安云服务器上绑定域名并配置虚拟主机?
JS中对数组元素进行增删改移的方法总结
Laravel如何使用Vite进行前端资源打包?(配置示例)
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
中山网站推广排名,中山信息港登录入口?
QQ浏览器网页版登录入口 个人中心在线进入
如何解决hover在ie6中的兼容性问题
js实现获取鼠标当前的位置
浅谈redis在项目中的应用
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
专业商城网站制作公司有哪些,pi商城官网是哪个?
浅谈Javascript中的Label语句
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Android使用GridView实现日历的简单功能
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
如何在建站之星网店版论坛获取技术支持?
网站制作壁纸教程视频,电脑壁纸网站?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
零服务器AI建站解决方案:快速部署与云端平台低成本实践
北京企业网站设计制作公司,北京铁路集团官方网站?
如何实现建站之星域名转发设置?
Laravel如何集成Inertia.js与Vue/React?(安装配置)
如何快速辨别茅台真假?关键步骤解析
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何快速搭建个人网站并优化SEO?
如何基于云服务器快速搭建网站及云盘系统?
如何在局域网内绑定自建网站域名?
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
用yum安装MySQLdb模块的步骤方法
如何实现javascript表单验证_正则表达式有哪些实用技巧
如何登录建站主机?访问步骤全解析
如何快速查询域名建站关键信息?
Laravel如何处理和验证JSON类型的数据库字段
千库网官网入口推荐 千库网设计创意平台入口
想要更高端的建设网站,这些原则一定要坚持!
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
制作公司内部网站有哪些,内网如何建网站?
如何在万网利用已有域名快速建站?
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
如何在IIS7中新建站点?详细步骤解析


Str,
new TypeReference