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. linux系统中对SSD硬盘优化的方法

    在测试虚拟机往分布式存储中写数据的最大性能时,做的一些系统修改 1.ext4文件系统在SSD硬盘是最快的 2.查看当前系统支持的IO调度算法 dmesg | grep -i scheduler 3.查 ...

  2. mysql'密码安全

    MYSQL数据库的安全配置 MYSQL密码的修改与恢复 MYSQL数据库密码的修改 Mysql5.7以下默认root登录密码为空,安装完成之后首先需要修改root的登录密码. # mysqladm – ...

  3. python day14--内置函数二

    主要内容: 1.lamda匿名函数 2.sorted() 3.filter() 4.map() 5.递归函数 一.Lamda匿名函数 语法:lamda:参数:返回值 # 计算n的n次⽅方 def fu ...

  4. swift3.0 存取json数据到沙盒

    do { //将json保存到本地 let jsonData = try JSONSerialization.data(withJSONObject: dict, options: .prettyPr ...

  5. BZOJ 1083 [SCOI2005]繁忙的都市 (最小生成树裸题无重边) 超简单写法!!

    Description 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口 ...

  6. SSM整合框架实现ajax校验

    SSM整合框架实现ajax校验   刚学习了ssm框架,ajax校验成功,分享下 1.导入jar包

  7. 【c++基础】字符数组和string相互转换

    字符数组转化成string类型char ch [] = "ABCDEFG";string str(ch);//也可string str = ch;或者char ch [] = &q ...

  8. SSH升级到7.7

    #!/bin/bash#删除旧版ssh包 危险操作,不删除也可以安装,建议跳过此操作.#rpm -e `rpm -qa | grep openssh` #安装zlib依赖包wget -c http:/ ...

  9. Wifi设备接入流程

    这是硬件平台下文档结构图,详细了解戳这里具体了解这里. 什么意思呢?要想实现控制wifi设备,基本流程是: 咱自己的wifi设备----------自己的服务器(指图中的厂商服务器)-------微信 ...

  10. TS 基础数据类型

    1.基础数据类型 Boolean布尔值   Number数字 String字符串  Array数组 Tuple元组  Enum枚举   Any    void Boolean布尔值:true/fals ...