json字符串转java对象
今天遇到一个问题,前端ajax获取到一个javaBean对象,好多方法发ajax请求需要把这个对象再传到后端,后端再根据这个对象进行操作(之前计划传递id,但发现传递id的话,后端多个方法都需要根据id查询数据库获取这个javaBean,因此就修改为直接传递javaBean),这就涉及到了json字符串与java对象转化,特此记录一下。大概有两种方式比较方便:
一、Gson的方式
二、json-lib的方式
1.前端jquery把对象转为json字符串
"dclLine":JSON.stringify(selectedDclLine);

2.后端Gson转java对象
/**
*
* @return
*/
@RequestMapping("/getDayCharge")
@ResponseBody
public List<Object> getDayCharge(HttpServletRequest request){
Map<String, Object> params = new HashMap<String, Object>(16);
//前端左侧树回路信息
String dclLineStr = request.getParameter("dclLine");
Gson gson = new Gson();
//Gson转换json字符串到java对象
DclLine dclLine = gson.fromJson(dclLineStr, DclLine.class);
params.put("dclLine", dclLine);
List<Object> result = runningReportsService.getDayCharge(params);
return result;
}
转换过程报错:
threw exception [Request processing failed; nested exception is
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: empty String] with root cause
比较了下json数据与javaBean的类型发现javaBean定义的类型是Double,json数据是"",类型转换报错了


把javaBean中的Double类型改为String类型后,转换成功

但是改javaBean类型涉及改动太大,
在不改变javaBean类型的情况下,试着用json-lib转换了下,发现json-lib转换不报错
3.后端使用json-lib把json字符串转为java对象
/**
* 日用电负荷
* @return
*/
@RequestMapping("/getDayCharge")
@ResponseBody
public List<Object> getDayCharge(HttpServletRequest request){
Map<String, Object> params = new HashMap<String, Object>(16);
//前端左侧树回路信息
String dclLineStr = request.getParameter("dclLine");
JSONObject json = JSONObject.fromObject(dclLineStr);
DclLine dclLine = (DclLine) JSONObject.toBean(json, DclLine.class);
params.put("dclLine", dclLine);
List<Object> result = runningReportsService.getDayCharge(params);
return result;
}

4.pom配置:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.3</version>
<classifier>jdk15</classifier>
</dependency>
5.总结:
Gson:
String dclLineStr = request.getParameter("dclLine");//获取到json字符串
Gson gson = new Gson();//com.google.gson.Gson
//Gson转换json字符串到java对象
DclLine dclLine = gson.fromJson(dclLineStr, DclLine.class);
json-lib:
String dclLineStr = request.getParameter("dclLine");//获取到json字符串
JSONObject json = JSONObject.fromObject(dclLineStr);//net.sf.json.JSONObject
DclLine dclLine = (DclLine) JSONObject.toBean(json, DclLine.class);
6.参考博客:
https://blog.csdn.net/chenbin520/article/details/8776915
https://www.cnblogs.com/echo-ling/p/8097698.html
https://blog.csdn.net/a77979744/article/details/53695621
https://blog.csdn.net/tanga842428/article/details/54864485
json字符串转java对象的更多相关文章
- JSON字符串与java对象的转换
所需的jar包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar ...
- JSON 字符串 与 java 对象的转换
jsonLib 经典文章:http://json-lib.sourceforge.net/xref-test/net/sf/json/TestJSONObject.html // 引入相应的包 //j ...
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mengzhengbin520.blog.51cto.com/7590564/12 ...
- Json对象与Json字符串的转化、JSON字符串与Java对象的转换
一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...
- Json对象与Json字符串的转化、JSON字符串与Java对象的转换(转)
一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...
- json字符串与java对象的相互转换(jackson)
1.java对象转换为json字符串 package com.chichung.json; import com.fasterxml.jackson.core.JsonProcessingExcept ...
- Java中JSON字符串与java对象的互换实例详解
这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...
- Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换
总结一下利用Json相关jar包实现Java对象和集合与Json字符串之间的互相转换: 1.创建的User类: package com.ghj.packageofdomain; public clas ...
- java json数据转List对象的集合-----阿里巴巴插件---及原生json---JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】
List<RunfastFullLess> list=(List<RunfastFullLess>)JSONArray.parseObject(activity.getFull ...
随机推荐
- Bluedroid协议栈BTU线程处理HCI数据流程分析
在蓝牙enable的过程中会进行多个线程的创建以及将线程与队列进行绑定的工作.该篇文章主要分析一下处理hci数据这个 线程. void BTU_StartUp(void) { ... btu_bta_ ...
- task1
centos定时任务 清空特定目录文件 https://www.jb51.net/article/151066.htm 这次linux下不生成日志文件主要是因为日志框架冲突问题,我解决问题的思路错了 ...
- [arc076F]Exhausted?[霍尔定理+线段树]
题意 地上 \(1\) 到 \(m\) 个位置摆上椅子,有 \(n\) 个人要就座,每个人都有座位癖好:选择 \(\le L\) 或者 \(\ge R\) 的位置.问至少需要在两边添加多少个椅子能让所 ...
- JQ_插件开发
在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了. ...
- Mvc4_mvc4跟mysql语法
mvc4: 子页面:@section A{} 母页面:@RenderSection("A",false) false:别的页面没有定义为A的Section的话 也没事,layout ...
- 关于java线程池的一丢丢
线程池应用达到的目的 1.降低资源消耗:可以重复利用已创建的线程从而降低线程创建和销毁所带来的消耗. 2.提高响应速度:当任务到达时,不需要等线程创建就可以立即执行. 3.提高线程的可管理性:使用线程 ...
- MVC模式简单的Xml文档解析加Vue渲染
前端代码: <script src="~/Js/jquery-3.3.1.min.js"></script> <script src="~/ ...
- Studying GIT
Studying git Shopping list: GIT的功能 接触一个新的软件或者网站,最重要的就是认识它的功能:Git 是用于 Linux内核开发的版本控制工具.与常用的版本控制工具 CVS ...
- 助教日志—请沈航13级同学将GIT地址和CNBLOG地址发到这篇博文的评论中
一.评论形式: 学号 姓名 博客地址 GIT地址 如 2011102456 郑蕊 http://www.cnblogs.com/zhengrui0452/ http://121.42.14.1/Rui ...
- [2017BUAA软工]个人阅读作业+总结
阅读作业 没有银弹 No Silver Bullet - Essence and Accidents of Software Engineering - Brooks 在这篇论文中,作者阐述了软件的四 ...