Map类型做为一种常见的Java类型,经常在开发过程中使用,笔者最近遇到要将Map对象做为一种通用的参数变量,下传到多个业务类方法中,然后在各个业务类方法中将Map转换为指定类对象的情况。如何将Map转为各个不同的业务类对象,笔者通过com.alibaba.fastjson.JSON类来实现该转换。
例如需要将Map转为类ClearAcceptBatchOutDto对象。

1.实体类:ClearAcceptBatchOutDto

public class ClearAcceptBatchOutDto {

    /**
* 产品编码
**/
private String productCode; /**
* 支付类型和金额组(此处包含嵌套类PayTypeRequestDto)
**/
private List<PayTypeRequestDto> payTypeGroup; /**
* 手续费金额
**/
private Long poundageAmount; public String getProductCode() {
return productCode;
} public void setProductCode(String productCode) {
this.productCode = productCode;
} public List<PayTypeRequestDto> getPayTypeGroup() {
return payTypeGroup;
} public void setPayTypeGroup(List<PayTypeRequestDto> payTypeGroup) {
this.payTypeGroup = payTypeGroup;
} public Long getPoundageAmount() {
return poundageAmount;
} public void setPoundageAmount(Long poundageAmount) {
this.poundageAmount = poundageAmount;
} @Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}

2.实体类:PayTypeRequestDto

public class PayTypeRequestDto {

    /**
* 支付方式
**/
private String payType; /**
* 支付方式金额
**/
private Long amount; public String getPayType() {
return payType;
} public void setPayType(String payType) {
this.payType = payType;
} public Long getAmount() {
return amount;
} public void setAmount(Long amount) {
this.amount = amount;
} @Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}

3.将Map对象转换为对象ClearAcceptBatchOutDto:

    public static void main(String[] args) {
// 构造map对象(这里要确保key与对象中的属性变量名大小写一致)
Map<String, Object> params = new HashMap<String, Object>();
params.put("productCode", "01010101");
params.put("poundageAmount", 222L); // 构造嵌套对象集合
List<Map<String, Object>> payTypeGroup = new ArrayList<Map<String, Object>>();
Map<String, Object> payTypeGroupMap = new HashMap<String, Object>();
payTypeGroupMap.put("payType", "01");
payTypeGroupMap.put("amount", 100L);
payTypeGroup.add(payTypeGroupMap); Map<String, Object> payTypeGroupMap2 = new HashMap<String, Object>();
payTypeGroupMap2.put("payType", "02");
payTypeGroupMap2.put("amount", 101L);
payTypeGroup.add(payTypeGroupMap2); params.put("payTypeGroup", payTypeGroup); // 将map转为ClearAcceptBatchOutDto对象
ClearAcceptBatchOutDto clearAcceptBatchOutDto = JSON.parseObject(JSON.toJSONString(params), ClearAcceptBatchOutDto.class); // 打印对象
System.out.println(params);
System.out.println(clearAcceptBatchOutDto);
}

以下控制台输出信息:

Map对象:
{poundageAmount=222, productCode=01010101, payTypeGroup=[{amount=100, payType=01}, {amount=101, payType=02}]}

ClearAcceptBatchOutDto对象:
com.suning.epp.css.clear.dto.ClearAcceptBatchOutDto@1c78c0b[productCode=01010101,payTypeGroup=[com.suning.epp.css.clear.dto.PayTypeRequestDto@843fce[payType=01,amount=100], com.suning.epp.css.clear.dto.PayTypeRequestDto@1dd3bcd[payType=02,amount=101]],poundageAmount=222]

利用JSON将Map转换为类对象的更多相关文章

  1. 类对象序列化为json串,json串反序列化为类对象

    1.类对象序列化为json串: 方法一: class P(object): def __init__(self,name,age,sex): self.name=name self.age=age s ...

  2. Qt JSON解析生成笔记(把JSON转成一个类对象)

    对于这样一段json { "name": "布衣食", "gender": "Male", "age" ...

  3. c# 利用反射动态给实体类对象赋值

    转:http://blog.sina.com.cn/s/blog_659a572b0100xp5s.html 例子如下 using System; using System.Collections.G ...

  4. 读取XML直接转换为类对象

    <?xml version="1.0" encoding="utf-8"?> <ArrayOfMenuItems xmlns:xsi=&quo ...

  5. 将Map转换为Java 对象

    public class MapUtil { public static Object convert2Object(Class clazz,Map<String,Object[]> ma ...

  6. 将JSON格式数据转换为javascript对象 JSON.parse()

    <html><body><h2>通过 JSON 字符串来创建对象</h3><p>First Name: <span id=" ...

  7. 将java中Map对象转为有相同属性的类对象(json作为中间转换)

    java中Map对象转为有相同属性的类对象(json作为中间转换) 准备好json转换工具类 public class JsonUtil { private static ObjectMapper o ...

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

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

  9. 实体模型集合对象转换为VO对象集合

    例如: 数据库中查出来的数据为 List<RptDayMonthTarget> List<RptDayMonthTarget> list = targetService.sel ...

随机推荐

  1. python23的区别-日常记录

    1. xrange:python3 中取消了range函数,把python2中的xrange重新命名为range,所以在python3中直接用range就行. 2. print:python3中pri ...

  2. shell脚本实例-mysql多机部署

    今天我给大家分享shell 安装mysql 多机部署的实例,本次实验是基于各个主机的公钥已经配置好了,如果还不会推送公钥的同学,可以看看我以前写的文章,那里面有写推公钥的实例,mysql 多机部署一般 ...

  3. python 常用的高阶函数

    前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. map() map函数可以把一个迭代对象转换成另一个可迭代对象,不过在pyth ...

  4. IDEA_debug窗口问题,debugger窗口消失,窗口漂浮等

  5. python的ConfigParser模块

    前言 处理配置文件做增.删.改.查 操作. 配置文件的格式如下:“[ ]”包含的为 section,section 下面为类似于 key - value 的配置内容: configparser 默认支 ...

  6. c++ 中:和::理解

    1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; X ...

  7. DG备库无法接受主库归档日志之密码文件

    DG备库无法接受主库归档日志之密码文件 实验目的:还原某个客户案例,客户审计需要,对主库sys用户进行锁定,一小时后对sys用户进行解锁后,发现备库无法接受主库的归档日志 本篇文章,测试sys用户与D ...

  8. 【leetcode】26-RemoveDuplicatesfromSortedArray

    problem RemoveDuplicatesfromSortedArray 注意数组为空的情况要首先考虑,并给出返回值: 注意也要同时给出新的数组的数值: 注意数组最后两个元素的处理: class ...

  9. Maxscale-在第一个节点的配置

    [maxscale]threads=4 ##### Write Service, need to set address[server1]type=serveraddress=172.16.50.36 ...

  10. es6 set&sort

    es6提供了新的数据结构Set. 它类似于数组,但是成员的值都是唯一的,没有重复的值. Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化. 1.set去重 首先我们 let 一个数组 ...