fastjson转换json格式数据为ListHashMap转换异常问题
2019独角兽企业重金招聘Python工程师标准>>>
在做crm任务分发系统中的【批量修改任务工单的选项】问题时,需要对接口数据进行处理,接口数据举例如下,
[
{
"title": "使用情况",
"options": [
{
"name": "好",
"value": 1
},
{
"name": "不好",
"value": 2
},
{
"name": "还行",
"value": 3
}
]
},
{
"title": "优化情况",
"options": [
{
"name": "好",
"value": 1
},
{
"name": "不好",
"value": 2
},
{
"name": "还行",
"value": 3
}
]
}
]
|
注意,options里是个array或者list 。
虽然结构复杂,但是也算清晰。一开始想用JSONArray.parseArray(jsondata, HashMap.class); 转化为以一个List<HashMap>,然后再取得每个HashMap,每个HashMap中又是一个List<HashMap>,然后再遍历取得HashMap。
但是就在第二次遍历list的时候出现了异常,
- for(HashMap configData : configDataList ){ //这行出错
- int value = (Integer)configData.get("value");
- }
结果运行发现有错,错误信息如下:
Exception in thread “” java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to java.util.HashMap
跟踪发现,那个地方其实包含的是个JSONArray,所以cast出错。 解决方法,对应json格式的数据,写出对应的java bean,然后再来反序列化。
不过由于只有一个调用,没有必要再添加一个bean,所以自己写了一个处理函数,目的是要让fastjson处理后,得到的结果里不再有com.alibaba.fastjson包下的类型:
// 将jsonString转化为hashmap
private HashMap<String, Object> fromJson2Map(String jsonString) {
HashMap jsonMap = JSON.parseObject(jsonString, HashMap.class);
HashMap<String, Object> resultMap = new HashMap<String, Object>();
for(Iterator iter = jsonMap.keySet().iterator(); iter.hasNext();){
String key = (String)iter.next();
if(jsonMap.get(key) instanceof JSONArray){
JSONArray jsonArray = (JSONArray)jsonMap.get(key);
List list = handleJSONArray(jsonArray);
resultMap.put(key, list);
}else{
resultMap.put(key, jsonMap.get(key));
}
}
return resultMap;
}
private List<HashMap<String, Object>> handleJSONArray(JSONArray jsonArray){
List list = new ArrayList();
for (Object object : jsonArray) {
JSONObject jsonObject = (JSONObject) object;
HashMap map = new HashMap<String, Object>();
for (Map.Entry entry : jsonObject.entrySet()) {
if(entry.getValue() instanceof JSONArray){
map.put((String)entry.getKey(), handleJSONArray((JSONArray)entry.getValue()));
}else{
map.put((String)entry.getKey(), entry.getValue());
}
}
list.add(map);
}
return list;
}
|
转载于:https://my.oschina.net/zouqun/blog/408648
fastjson转换json格式数据为ListHashMap转换异常问题相关推荐
- Poco库使用:操作Json格式数据
文章目录 1.解析json字符串数据 2.生成Json格式的数据 3.操作Json数组 4.使用字符串流转换Json格式数据 5.使用键值检索Json结构中的数据 6.使用原始字符串避免字符转义 7. ...
- xml 文本转json java_java将XML文档转换成json格式数据
本篇文章主要介绍了java将XML文档转换成json格式数据的示例,希望能帮助到大家. 功能 将xml文档转换成json格式数据 说明 依赖包: 1. jdom-2.0.2.jar : xml解析工具 ...
- python json格式和csv文件转换
python json格式和csv文件转换 上代码 1 import csv 2 import json 3 4 ''' 5 json格式示例 6 [{ "firstName":& ...
- 前端json格式的介绍,转换以及解析
近几日碰到json的问题比较多,我这里做一个总结,比较浅显简单,希望能对那些前端小白有所帮助,能对json有一个认识,并且能简单的处理json格式的内容. 例如最近碰到一个项目,项目需求如下: 用户选 ...
- 关于Laravel中使用response()方法调用json()返回数据unicode编码转换的问题解决
关于Laravel中使用response()方法调用json()返回数据unicode编码转换的问题解决 参考文章: (1)关于Laravel中使用response()方法调用json()返回数据un ...
- Json格式数据解析
一.简介 XML这种数据格式.XML的特点是功能全面,但标签繁琐,格式复杂.在Web上使用XML现在越来越少,取而代之的是JSON这种数据结构. JSON是JavaScript Object Nota ...
- FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. JSONObject:fas ...
- python中json模块_Python使用内置json模块解析json格式数据的方法
本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模 ...
- 通过输入流获取json格式数据转为map格式
将通过输入流获取json格式数据转为map格式 转换代码: try {int length = 0;//通过输入流获取到json格式数据ServletInputStream inputStream = ...
最新文章
- jittor 训练手写数字识别(mnist)
- 数制之非十进制数转十进制数
- 20321关系数据库理论基础
- python爬取贴吧所有标题的评论_用BS4爬取贴吧文章的作者信息时,如何兼顾爬取高亮的作者信息?...
- 从List分组后重新组织数据
- 黑客开始利用云计算暴力破解密码
- thinkPHP 空模块和空操作、前置操作和后置操作 详细介绍(十四)
- 集成电路技术与产业发展
- 高级商务办公软件应用【6】
- 词云图生成器使用帮助
- 01.数模竞赛论文的写作
- php在广告策划方面需要什么,网上推广网店运营 系统是基于PHP+MySQL的B2B(电子商务)行业门户解决方案”是什么意思呢,谢谢...
- 2015阿里巴巴校招网上笔试
- android 7.0下载地址,android 7.0 Downloadprovider 下载流程
- UnityShader入门精要——运动模糊
- 博弈问题总集第三类----Staircase Nim
- C++编译器如何实现异常处理
- nginx配置https阿里云免费ssl
- go语言开发工具sublime text3 + gosublime配置
- Android Systrace 基础知识(10) - Binder 和锁竞争解读
热门文章
- 安装mysql数据库及问题解决方法
- ie8不支持console.log()的解决方法
- ubuntu终端执行shell脚本报command not found解决方法
- 移动硬盘新建选项消失、不能新建文件夹和文件的解决方案
- 为什么++ [[]] [+ []] + [+ []]返回字符串“ 10”?
- python口号_编程语言的口号
- Andriod:serializer序列化器生成xml文件
- python解析dom,关于Python解析xml dom的简单应用
- shell for循环两个变量并列_从Go汇编角度解释for循环的两个疑点
- 关于现代计算机的知识,从资本经济到知识经济:现代计算机的知识革命