利用JSON將Map轉換為類對象


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]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM