json字符串转化为复杂的java对象问题解决分享
来源:互联网 发布:网络销售卖红酒好不好 编辑:程序博客网 时间:2024/05/16 09:16
一、遇到的问题
在实际的web程序,特别是后台程序,经常需要将批量数据保存到数据库,这样就会涉及到将前端页面的数据转化为java对象的问题。
1、对于简单的批量数据,比如说多个类目ID,就以逗号分隔的多个id的字符串就好了,这里不予讨论
2、对于复杂结构的批量数据,比如一批产品的信息,通常是使用json字符串传到后台,通过json-lib.jar来转换成java对象。
3、这里主要讨论要保存的是批量的复杂对象且每个复杂对象里还嵌套有复杂对象的情况。
二、解决方案示例
1、有两个实体,classA,classB定义如下:
public class A {
private Long id;
private String name;
private Integer status;
private String desc;
private List listB;
}
public class B {
private Long id;
private String name;
private Integer status;
private String desc;
}
2、如果要在html页面保存一批数据,这批数据转化为java对象就是一个List<A>,且其中每一个A中还有一个list<B>,则需要在页面拼装如下的一个字符串传入web服务器端
jsonString = "[{'id':11,'name':'A1','status':1,'desc':'hello A1!',listB:[
{'id':21,'name':'B1','status':1,'desc':'hello B1!'},
{'id':22,'name':'B2','status':1,'desc':'hello B2!'}]},
{'id':12,'name':'A1','status':1,'desc':'hello A2!',listB:[
{'id':23,'name':'B3','status':1,'desc':'hello B3!'},
{'id':24,'name':'B4','status':1,'desc':'hello B4!'}]}]";
3、java端用一个字符串jsonString 接收后,通过json-lib.jar转化为一个List<A>的代码如下:
Map classMap = new HashMap();
classMap.put("listB",B.class);
List<A> listA = JSONArray.toList(JSONArray.fromObject(selectPurJson), A.class, classMap);
这里最主要的就是通过一个map指明嵌套的复杂对象所属的类型,来对json字符串转化为java对象进行提示。如 classMap.put("listB",B.class); 的意思是:要转化成的目标java对象A中有一个字段listB的类型是 B.class
三、json-lib的maven路径(一般web程序里都有这个jar)
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
0 0
- json字符串转化为复杂的java对象问题解决分享
- java 将复杂对象转化为Json
- java对象转化为json字符串
- 将json字符串转化为java对象
- 【python】复杂对象的创建过程与转化为json
- json字符串转化为对象
- JSON-lib转化JAVA对象为JSON格式字符串
- java JSON转化为对象的例子
- json-lib将json格式的字符串,转化为java对象
- JOSN对象转化为字符串,字符串转化为JSON对象
- json字符串转化为java对象(一)
- 复杂的json字符串转换为javabean对象
- JSON 转化为java对象
- JSON转化为java对象
- 对象转化为json格式字符串,json格式字符串转化为JSONObject对象,取出JSONObject对象里的key值
- Asp.net中将对象转化为JSON格式的字符串
- 对象转化为json字符串好用的方法
- Java 复杂的Json文件解析为java对象
- 树的子结构
- 关于ScrollView嵌套ListView的一些问题
- Spark Streaming和Storm的区别和联系
- 免费、高性能的人脸检测库
- 如何判断一个二叉树是否为平衡二叉树。
- json字符串转化为复杂的java对象问题解决分享
- Hadoop和Spark的联系和区别
- 基于i2c子系统的驱动分析
- Spark概述
- typedef的用法
- 欢迎使用CSDN-markdown编辑器
- 通过设置Weblogic设置线程数提高系统并发
- var 全局变量 局部变量
- 解决jquery easyui-datagrid列过多且无数据时列显示不全的bug