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]