通过反射实现Json数据部分更新JavaBean的属性
工作中遇到一个需求,根据对方返回Json来更新Java对象。查阅资料,写了个工具类,同时学到了反射获取集合泛型类型。代码里json类库为fastjson
public class JsonUtil {
/**
* JavaBean的属性比Json多时,根据Json更新JavaBean同名字段的值
*
* @param bean
* @param json
* @param <T>
*/
public static <T> void patchUpdate(T bean, JSONObject json) throws Exception {
Set<String> keys = json.keySet();
Field[] fields = bean.getClass().getDeclaredFields();
for (String key : keys) {
for (Field field : fields) {
if (field.getName().equals(key)) {
String value = json.getString(key);
String type = field.getType().toString();
field.setAccessible(true);
if (type.endsWith("String")) {
field.set(bean, value);
} else if (type.endsWith("int")) {
field.set(bean, Integer.parseInt(value));
} else if (type.endsWith("double")) {
field.set(bean, Double.parseDouble(value));
} else if (type.endsWith("Date")) {
DateFormat fmtDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = fmtDateTime.parse(value);
field.set(bean, date);
} else if (type.endsWith("List")) {
//先获取List的类型:java.util.List<E>
ParameterizedType pt = (ParameterizedType)field.getGenericType();
//获取泛型:E
Class e = (Class)pt.getActualTypeArguments()[0];
List list = JSONArray.parseArray(value, e);
field.set(bean, list);
}
}
}
}
}
}
通过反射实现Json数据部分更新JavaBean的属性的更多相关文章
- 控制层解析post请求中json数据的时候,有些属性值为空
原因: 1.默认json数据解析的时候,值会赋给键的首字母是小写的封装的bean中的属性,如果没有首字母小写的属性,也不会报错.即bean中有getXXX方法时,从json到model会增加xxx属性 ...
- json数据前台解析 修改check属性用prop()
jQuery中的$.getJSON( )方法函数主要用来从服务器加载json编码的数据,它使用的是GET HTTP请求.使用方法如下: $.getJSON( url [, data ] [, succ ...
- 反射--> 解析JSON数据
方法一 Persons.json文件 [ { "name": "Chris", "age": 18, "city": & ...
- SpringMVC返回JSON数据时日期格式化问题
https://dannywei.iteye.com/blog/2022929 SpringMVC返回JSON数据时日期格式化问题 博客分类: Spring 在运用SpringMVC框架开发时,可 ...
- 使用TSQL查询和更新 JSON 数据
JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...
- Google中Gson的使用解析json数据-------学习篇
之前写过一篇Gson解析json数据的基本应用,这里不多说,直接上例子. 有兴趣的可以先阅读下之前那篇,这里附上链接: http://www.cnblogs.com/Ant-soldier/p/632 ...
- 使用Gson轻松解决复杂结构的Json数据解析
转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50961803 JSON简介 JSON(JavaScript Object Notati ...
- Ajax —— 服务器端发送JSON数据
重点需要解决的问题:服务器端如何构建JSON数据 思考:JavaBean转JSON数据,集合转JSON数据,普通java对象(String,Number)转JSON数据 一.Gson开源jar包 ...
- 判断json数据是否为空
json数据是没有length这个属性的 ,所以不能直接用.length()方法 我们可以先遍历,然后根据遍历次数求长度 1.在IE上这样遍历json:(js代码) var jsonLength = ...
随机推荐
- ListView 介绍
1. 通过继承Activity实现ListView 1.1 在XML布局文件中实现一个ListView <ListView android:layout_width="wrap_con ...
- tomcat7以上,ajax post参数后台获取不到的问题
AJAX post传参后台获取不到查询参数. 网上找了各种方法,包括设置content-type,又是把json转成json格式字符串,问题依然存在,但是把post改成get又可以获取到,百思不得其解 ...
- oauth简单使用
一.oauth原理参考 理解OAuth 2.0 二.本例中采用授权码模式 大致流程 (A)用户访问客户端,后者将前者导向认证服务器. (B)用户选择是否给予客户端授权. (C)假设用户给予授权,认证服 ...
- readSerializableObj
package JBJADV003;import java.io.*;public class readSerializableObj { public static void main(String ...
- 谈谈ES6箭头操作符
如果你会C#或者Java,你肯定知道lambda表达式,ES6中新增的箭头操作符=>便有异曲同工之妙.它简化了函数的书写.操作符左边为输入的参数,而右边则是进行的操作以及返回的值Inputs=& ...
- python编程快速上手之第3章实践项目参考答案
1 #!/usr/bin/env python 2 # coding:utf-8 3 # write by mfyang 4 # collatz.py 5 # 从用户读入一个值,并判断这个值是不是一个 ...
- 刨根究底字符编码之十四——UTF-16究竟是怎么编码的
UTF-16究竟是怎么编码的 1. 首先要注意的是,代理Surrogate是专属于UTF-16编码方式的一种机制,UTF-8和UTF-32是不用代理的. 如前文所述,为了让UTF-16能继续编码基本平 ...
- raft如何实现leadership transfer
leadership transfer可以把raft group中的leader身份转给其中一个follower.这个功能可以用来做负载均衡,比如可以把leader放在性能更好的机器或者离客户端更近的 ...
- CSS变量variable
前面的话 一直以来,CSS中是没有变量而言的,要使用 CSS 变量,只能借助 SASS 或者 LESS 这类预编译器.新的草案发布之后,直接在 CSS 中定义和使用变量不再是幻想了.本文将详细介绍CS ...
- C# Datatable.Select()用法简介
dt为一个DataTable,以dt为例说明dt.select()方法的功能: 1.dt.Select() 获取所有行数 例:Datarow[] drs=dt.Select(); 此时drs为dt数据 ...