简单说明:

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

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

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

<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<version>1.2.5</version>
</dependency>

如果使用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<String, SimpleUser> JSON2Map() {
Map<String, SimpleUser> map = new HashMap<String, SimpleUser>();
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<String> 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<String> address; public ComplexUser() {
} public ComplexUser(int id, String name,
String sex, int age, String province,
List<String> address) {
super(id, name, sex, age, province);
this.address = address;
} public List<String> getAddress() {
return address;
} public void setAddress(List<String> address) {
this.address = address;
} }

Java中将JSON格式的数据转换成对应的Bean、Map、List数据的更多相关文章

  1. python将json格式的数据转换成文本格式的数据或sql文件

    python如何将json格式的数据快速的转化成指定格式的数据呢?或者转换成sql文件? 下面的例子是将json格式的数据准换成以#_#分割的文本数据,也可用于生成sql文件. [root@bogon ...

  2. JS中将JSON的字符串解析成JSON数据格式《转》

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...

  3. 把json格式对象转成可提交字符串格式,会过滤掉函数 {a: {b: 3}, b: [1], c: "d"} -> a.b=3&b[0]=1&c=d

    var json = { name: "任务名称" , scoreRule: "", score: "", // 如果规则表达式不为空,则默 ...

  4. java保存json格式数据,保存字符串和读取字符串

    1.java保存json格式数据,保存字符串和读取字符串 import java.io.*; class RWJson { public void wiite(String s, String toS ...

  5. Java 实现将其他类型数据转换成 JSON 字符串工具类

    这是网上一个大神实现的,具体出处已找不到,在这做个记录,方便以后使用. package com.wb.test; import java.beans.IntrospectionException; i ...

  6. PHP、Java输出json格式数据

      PHP 输出json. $result = mysql_query($sql); //查询结果 $users=array(); $i=0; while($row=mysql_fetch_array ...

  7. java 解析json格式数据(转)

    2012-07-30 16:43:54|  分类: java |  标签:java  json  |举报|字号 订阅     有时候我们可能会用到json格式的数据进行数据的传输,那么我们怎么把接收到 ...

  8. List转换成json格式字符串,json格式字符串转换成list

    一.List转换成json字符串 这个比较简单,导入gson-x.x.jar, List<User> users = new ArrayList<User>(); Gson g ...

  9. java导出json格式文件

    生成json文件代码: import java.io.File; import java.io.FileWriter; import java.io.Writer; public class Crea ...

随机推荐

  1. Oracle经验积累

    Oracle 常用Funtion ----行转列 开始---- select u_id, wmsys.wm_concat(goods) goods_sum from shopping group by ...

  2. Centos7从3.10升级内核到4.9后无法启动解决办法:mpt[23]sas驱动问题

    Centos7升级内核后无法启动解决办法:mpt[23]sas驱动问题 前言 这个问题存在有一段时间了,之前做的centos7的ISO,在进行内核的升级以后就存在这个问题: 系统盘在板载sata口上是 ...

  3. 分布式系列文章 —— 从 ACID 到 CAP / BASE

    转自:https://mp.weixin.qq.com/s?amp;mid=2652037708&__biz=MzI0NDI0MTgyOA%3D%3D&idx=1&chksm= ...

  4. [bzoj2044] 三维导弹拦截 (二分图最大匹配+dp)

    传送门 Description 一场战争正在A国与B国之间如火如荼的展开. B国凭借其强大的经济实力开发出了无数的远程攻击导弹,B国的领导人希望,通过这些导弹直接毁灭A国的指挥部,从而取得战斗的胜利! ...

  5. Linux运维工程师学习大纲

    linux运维课程大纲: Linux运维: Linux系统管理: Linux服务及安全管理: httpd,lamp,lnmp cache:memcached,varnish DB:mysql(mari ...

  6. Ubuntu14.043下QT5.5的安装与一点问题

    请注明来自于 http://www.cnblogs.com/usegear/p/5100720.html 1.下载qt-opensource-linux-x86-5.5.0.run(去教育镜像网站下载 ...

  7. nutz_web应用中主页跳转到登录页面的方式

    一.前言 web应用开发时,地址栏输入ip+port+appName,通常可以跳转到登录页面.以下便介绍我所知道并且验证过的三种跳转方式. 二.准备工作 需要使用到两个url的处理分别如下: @At( ...

  8. Column注解的的RetentionPolicy的属性值是RUTIME,这样注解处理器可以通过反射,获取到该注解的属性值,从而去做一些运行时的逻辑处理

    1.Column注解的的RetentionPolicy的属性值是RUTIME,这样注解处理器可以通过反射,获取到该注解的属性值,从而去做一些运行时的逻辑处理 2. 自定义注解: 使用@interfac ...

  9. WindowsclientC/C++编程规范“建议”——函数

    1 函数 1.1 代码行数控制在80行及以内 等级:[要求] 说明:每一个函数的代码行数控制应该控制在80行以内.假设超过这个限制函数内部逻辑一般能够拆分.假设试图超过这个标准.请列出理由. 但理由不 ...

  10. HDU2191_悼念512汶川大地震遇难同胞——珍惜如今,感恩生活(背包/多重背包)

    解题报告 题目传送门 题意: 中文不多说; 思路: 基础多重背包,每一个物品有多个能够选.转换成01背包解. #include <iostream> #include <cstrin ...