博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中将JSON格式的数据转换成对应的Bean、Map、List数据
阅读量:7042 次
发布时间:2019-06-28

本文共 3435 字,大约阅读时间需要 11 分钟。

简单说明:

为了方便数据在客户端及服务器端的传输,有时候我们会用一些比较方便组织的数据类型,比如json、xml等传给客户端,客户端也可以重新组织数据传回服务器端。JSON和XML提供了一套比较方便的数据组织形式。。并且有很多现成的类库用于解析这些数据。。

本文是对net.sf.json使用后的总结。。目前官方开源的对json进行处理的项目很多,fastjson还有其它等等。。视自己处理问题的复杂程度考虑选择使用不同的依赖包。。

如果使用maven构建项目,需要对以下两个包进行依赖

net.sf.json-lib
json-lib
2.2.3
xom
xom
1.2.5

如果使用Eclipse自己构建项目,需要自己手动下载依赖包进行依赖。

 

示例程序:

1.将JSON组装的实体数据类型转换为Java中对应的简单Bean对象(只包含简单的数据类型)

/** * 将json格式封装的简单实体类型数据转换成简单类型的javabean * @return */private static Object JSON2SimpleBean() {	String jsonStr = "{\"age\":23,\"id\":123,\"name\":\"tt_2009\"," +			"\"province\":\"上海\",\"sex\":\"男\"}";	JSONObject jsonBean = JSONObject.fromObject(jsonStr);	return JSONObject.toBean(jsonBean, SimpleUser.class);}

以上代码是将Json数据串转换成java中自定义的对应的简单bean。SimpleUser看最后代码附录。

 

2.将JSON组装的复杂数据转换成复杂的java数据实体(对象中包含其它复杂对象,如收货地址用List存储)

/** * 将json格式封装的复杂实体数据转换成复杂类型的javabean * @return */private static Object JSON2ComplexBean() {	String jsonStr = "{\"address\":[\"北京\",\"上海\",\"广州\"]," +			"\"age\":23,\"id\":123,\"name\":\"tt_2009\",\"province\":\"上海\",\"sex\":\"男\"}";	JSONObject jsonBean = JSONObject.fromObject(jsonStr);	return JSONObject.toBean(jsonBean, ComplexUser.class);}

以上代码将json组装的数据串转换成java中自定义的复杂数据实体。ComplexUser看最后附录代码。

 

3.将Json数据转换成java中的List

/** * 将json格式封装的列表数据转换成java的List数据 * @return */private static Object JSON2List() {	String jsonArray =			"[{\"age\":23,\"id\":123,\"name\":\"tt_2009_0\",\"province\":\"上海\",\"sex\":\"男\"}," +			"{\"age\":24,\"id\":123,\"name\":\"tt_2009_1\",\"province\":\"上海\",\"sex\":\"男\"}," +			"{\"age\":32,\"id\":123,\"name\":\"tt_2009_9\",\"province\":\"上海\",\"sex\":\"男\"}]";	return JSONArray.toList(JSONArray.fromObject(jsonArray), new SimpleUser(), new JsonConfig());}

以上代码将json组装的数据数据转换成java中的list数据。对更复杂的数据处理,后续文章介绍,比如处理日期等格式的数据。

 

4.将json数据转换成java中的Map。(注意key只能是字符串)

/** * 将json格式封装的字符串数据转换成java中的Map数据 * @return */private static Map
JSON2Map() { Map
map = new HashMap
(); String jsonMapStr = "{\"tt_2009_4\":{\"age\":27,\"id\":123,\"name\":\"tt_2009_4\",\"province\":\"上海\",\"sex\":\"男\"}," + "\"tt_2009_6\":{\"age\":29,\"id\":123,\"name\":\"tt_2009_6\",\"province\":\"上海\",\"sex\":\"男\"}," + "\"tt_2009_0\":{\"age\":23,\"id\":123,\"name\":\"tt_2009_0\",\"province\":\"上海\",\"sex\":\"男\"}}"; JSONObject jsonMap = JSONObject.fromObject(jsonMapStr); Iterator
it = jsonMap.keys(); while(it.hasNext()) { String key = (String) it.next(); SimpleUser u = (SimpleUser) JSONObject.toBean( JSONObject.fromObject(jsonMap.get(key)), SimpleUser.class); map.put(key, u); } return map;}

以上实现的是将json组装的key-value格式的数据转换成java中的map。

 

附录代码:

(setter、getter等方法省略掉了)

/** * 只包含基本数据类型的简单实体类 * @author TT_2009 */public class SimpleUser {	private int id;	private String name;	private String sex;	private int age;	private String province;}

 

/** * 包含复杂类型的实体类 * @author TT_2009 */public class ComplexUser extends SimpleUser {	private List
address; public ComplexUser() { } public ComplexUser(int id, String name, String sex, int age, String province, List
address) { super(id, name, sex, age, province); this.address = address; } public List
getAddress() { return address; } public void setAddress(List
address) { this.address = address; }}

转载地址:http://kmqal.baihongyu.com/

你可能感兴趣的文章
从中国质造到淘宝心选:CBM赋能“数造”新品牌
查看>>
Python 学习笔记1
查看>>
python(logging )日志模块学习
查看>>
树莓派 之 爬虫(Scrapy)
查看>>
.Net外包篇:我是怎么看待外包的(二)
查看>>
A* 算法发明人 Nils Nilsson 逝世
查看>>
Netty 源码阅读入门实战(三)-服务端启动
查看>>
让年轻程序员少走弯路的14个忠告(引)
查看>>
BIO NIO AIO演变
查看>>
Linux 安装 SonarQube 6.0 及Maven项目的使用
查看>>
LibreOffice 6.2.2 发布,功能强大的开源办公套件
查看>>
「架构技术专题」什么是架构设计的五个核心要素?(3)
查看>>
数据分析展现工具SDC UE
查看>>
windows下cmd时复制dos中的内容 错误信息等
查看>>
DNA sequence(映射+BFS)
查看>>
js_exception_01_ajax_能正常执行后台方法,可是无法返回
查看>>
一个数据库迁移案例解析
查看>>
网站安全-浅谈用户密码暴力破解
查看>>
论人性中的野性
查看>>
PyTorch 实战-用 Numpy 热身
查看>>