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. uwsgi理解

    uwsgi uWSGI 是一个 Web 服务器,它实现了 WSGI 协议.uwsgi.http 等协议.Nginx 中HttpUwsgiModule 的作用是与 uWSGI 服务器进行交换.WSGI ...

  2. 2019-03-08-day007-深浅拷贝

    01 昨日内容回顾 is 两者之间的id是否相同 == 两边的数值是否相等 id 获取该对象的内存地址 代码块: 一个文件,交互式命令行:一行是个一个代码块. 同一代码块下: 字符串的缓存机制,驻留机 ...

  3. mysql取差集、交集、并集

    mysql取差集.交集.并集 博客分类: Mysql数据库 需求:从两个不同的结果集(一个是子集,一个是父集),字段为电话号码phone_number,找出父集中缺少的电话号码,以明确用户身份. 结合 ...

  4. Python 默认值字典

    from collections import defaultdict # 默认值字典 dd = defaultdict(lambda: "胡辣汤") # callable 可调用 ...

  5. Python 关联关系

    class Boy: def __init__(self, name, girlFriend=None): # 在初始化的时候可以给一个对象的属性设置成另一个类的对象 self.girlFriend ...

  6. HDU 6034 17多校1 Balala Power!(思维 排序)

    Problem Description Talented Mr.Tang has n strings consisting of only lower case characters. He want ...

  7. HDU 1251 统计难题(字典树 裸题 链表做法)

    Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己 ...

  8. swift3.0 自定义键盘

    ...绕了一大圈,又绕回原生来了,今天,学习一下swift3.0语法下的自定义键盘.效果图如下: 其实,很简单,只需要把UITextView(或者UITextField)的inputView属性设置为 ...

  9. Spring Boot 揭秘与实战(五) 服务器篇 - 内嵌的服务器 Tomcat剖析

    文章目录 1. 内嵌的 Tomcat,一个Jar包运行 2. 如何定制内嵌 Tomcat3. War 包部署的使用细节 2.1. 设置内嵌Tomcat的端口 2.2. 设置内嵌Tomcat的最大线程数 ...

  10. 本地存储之application cache和localstorage

    http://blog.csdn.net/kingliguo/article/details/52637087