JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSON与JAVA对象之间的相互转换。

一、对普通类型的JSON模式的转换

一般JSON为最普通的String类型组成,没有其它Data或Object等这种特殊类形,具体例子如下:

JSON:
jsonString = {"name":"jack","sex":"men","age":23}; JAVA BEAN:
public class Person{
private String name;
private String sex;
private Integer age; ...omit get or set method...
} 现在如果我们想把上面的JSON格式转为Java bean类,常用方法为: jsonObject = JSONObject.fromObject(jsonString);
Object results = JSONObject.toBean(jsonObject, Person.class); 这样返回来的数据就为Person类型的实例,在JSONObject.toBean();的方法签名中第一个参数为jsonObject对象,第二个参数为要转换后的JAVA BEAN的class类。 二、对有Date或List类型的转换 JSON:
jsonString = {"name":"jack","sex":"women","birthday":"2010-06-12","address":[{"officeAttr":"NEWS RORK","HomeAttr":"beijing"},{"officeAttr":"taiyuan","HomeAttr":"hongkong"}]}; JAVA BEAN: public class Person{
private String name;
private String sex;
private Date birthday; private List<Address> address; ...omit get or set method...
} public class Address{
private String officeAttr;
private String homeAttr; ...omit get or set method...
} 现在如果我们想把上面的JSON格式转为Java bean类,常用方法为: JSONUtils.getMorpherRegistry().registerMorpher(new JsonDateValueProcessor(new String[] { "yyyy-MM-dd","yyyy-MM-dd HH:mm:ss" })); Map<String,Class> map = new HashMap<String,Class>();
map.put("address",Address.class); //map中的key值为json中list的key值,value为Address的class类对象
jsonObject = JSONObject.fromObject(jsonString);
Object results = JSONObject.toBean(jsonObject, Person.class, map); public class JsonDateValueProcessor implements JsonValueProcessor { private String format = "yyyy-MM-dd HH:mm:ss"; public JsonDateValueProcessor() { } public JsonDateValueProcessor(String format) {
this.format = format;
} public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return process(value, jsonConfig);
} public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
return process(value, jsonConfig);
} private Object process( Object value, JsonConfig jsonConfig ) {
if (value instanceof Date) {
String str = new SimpleDateFormat(format).format((Date) value);
return str;
}
return value == null ? null : value.toString();
} public String getFormat() {
return format;
} public void setFormat(String format) {
this.format = format;
} }

JSON 与JAVA对象之间的转换(转)的更多相关文章

  1. JSON与Java对象的互相转换

    JSON与Java对象的互相转换 例一(单个对象进行赋值): @RequestMapping("test1.do") @ResponseBody public JSONObject ...

  2. JSON字符串和对象之间的转换

    JSON(JavaScript Object Notation) 是JavaScript编程语言的一个子集.正因JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中. eval函数 ...

  3. JAVA里面json和java对象之间的相互转换

    1. 把java 对象列表转换为json对象数组,并转为字符串 JSONArray array = JSONArray.fromObject(list);    String jsonstr = ar ...

  4. Java基础97 json插件的使用(java对象和json字符串对象之间的转换)

    1.需要用到的包 2.实例 实体类 people package com.shore.entity; /** * @author DSHORE/2019-4-19 * */ public class ...

  5. jackson 进行json与java对象转换 之三

    2.测试类,没用Junit,用Main()方法输出. package test; import java.io.IOException; import java.util.ArrayList; imp ...

  6. JSON字符串和JS对象之间的转换

    JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象  JSON字符串 str JSON.parse(str) eval(str) eva ...

  7. Java中字节与对象之间的转换

    近期公司里面用到了消息队列,而正如我们知道的是消息队列之间的是通过二进制形式的.以下就分享一下java中字节与对象之间的转换. 主要是用到了ByteArrayOutputStream和ObjectOu ...

  8. Json:Java对象和Json文本转换工具类

    Json 是一个用于 Java 对象 和 Json 文本 相互转换的工具类. 安装 下载源码 git clone https://github.com/njdi/durian.git 编译源码 cd ...

  9. Json与Java对象互转之Gson学习

    Json与Java对象互转之Gson学习 请尊重他人的劳动成果.转载请注明出处:Json与Java对象互转之Gson学习         我曾在<XML,Object,Json转换之浅析Xstr ...

随机推荐

  1. php判断来源网址地址并且限制非法来源

    $fromHost = array( 'paipai.com', 'localhost', '127.0.0.1' ); $s = 'http://www.paipai.Com/chong/abc.s ...

  2. 如何在Quartus II中设置Virtual pin

    为了验证FPGA工程中的某个模块的功能和时序的正确性,常常需要对其单独进行验证,但是这些模块通常都与内部的众多信号相连(如系统总线,中断信号线等),往往一个模块的对外接口引脚会多达几百个,对其单独仿真 ...

  3. 一样的Android,不一样的学习

    这几年,Android开始慢慢流行起来,很多项目也开始涉及这部分内容,所以学习Android也就变的很有意义了. 学什么 学习Android应该学什么,很多人有不同的见解.一般程序员可能只是学习And ...

  4. html5+ plus和phoneGap、cordova的比较

    偶遇大神言论,摘录 phonegap出的早,自然用的人多.phonegap自己的定位是混合开发hybrid,用原生+js:HBuilder的定位是纯js搞定一切.5+ 和 phonegap在能力.性能 ...

  5. SQL Server数据库与max degree of parallelism参数

    我们今天主要向大家讲述的是SQL Server数据库中的max degree of parallelism参数,当 SQL Server 数据库在具N个微处理器或是 CPU 的计算机上运行时,它将为每 ...

  6. 6、android 普通日志输出到SD卡

    这是本人见过写博文最负责的一个人: http://www.crifan.com/android_try_use_android_logging_log4j_to_output_log_to_sd_ca ...

  7. 使用python远程登录

    最近要使用python做一个在web上管理交换机的程序,需要远程登录,就查了点资料,由于还没有搞到交换机,就先用自己的机器测试一下. 首先python的标准库中包含telnet,用起来也很方便,查看一 ...

  8. UVALive - 7374 Racing Gems 二维非递减子序列

    题目链接: http://acm.hust.edu.cn/vjudge/problem/356795 Racing Gems Time Limit: 3000MS 问题描述 You are playi ...

  9. sample a texture as a rendertarget

    ID3D11DeviceContext::PSSetShaderResources: Resource being set to PS shader resource slot 0 is still ...

  10. aspose.cell 自定义模板 SUM无效

    数字类型的单元格, 显示   解决方案: 绑定的DataTable的列为字符串类型. 应该将其设置成数字类型的列