java通过(J2)模板实现数据转换

1.Dependency

<dependency>
            <groupId>com.hubspot.jinjava</groupId>
            <artifactId>jinjava</artifactId>
            <version>2.5.6</version>
</dependency>

2.相关代码

HashMap<String, Object> qiMenOutbound = new HashMap<>();
            StockDeliveryOrder deliveryOrder = requestData.getDeliveryOrder();
            List<CreateOrderLine> orderLines = requestData.getOrderLines();
            qiMenOutbound.put("deliveryOrder",deliveryOrder);
            qiMenOutbound.put("orderLines",orderLines);
            
            JSONObject StockOutOrderObject = JsonConverterUtils.convert2Json("template/outbound_qimen_2B_wos4.json", qiMenOutbound);
package com.icil.qimen.service.utils;

import com.alibaba.fastjson.JSONObject;
import com.google.common.base.Charsets;
import com.google.common.io.Resources;
import com.hubspot.jinjava.Jinjava;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Map;

@Slf4j
public class JsonConverterUtils {

	public static JSONObject convert2Json(String mappingPath, Map<String, Object> convertContext) throws IOException {
			//try {
				Jinjava jinjava = new Jinjava();
				String template = Resources.toString(Resources.getResource(mappingPath), Charsets.UTF_8);
//				String template = ApolloMessageUtil.getString(mapping);
				String renderedTemplate = jinjava.render(template, convertContext);
				return JSONObject.parseObject(renderedTemplate);
//			} catch (Exception e) {
//				log.error("get template fail, because {}",e);
//				return null;
//			}		
	}
	
	
}

3.java中J2文件写到json文件中

{
  "customer": "{{orderLines[0].ownerCode}}",
  "orderService":"Normal",
  "orders": [
    {
      "orderNo": "{{deliveryOrder.deliveryOrderCode}}",
      "sourceLinkId": "{{deliveryOrder.oaidOrderSourceCode}}",
    {% if deliveryOrder.sourcePlatformCode == "OTHER" %}
    "salesPlatform" : "OTHERS",
    {% else %}
    "salesPlatform" : "{{deliveryOrder.sourcePlatformCode}}",
    {% endif %}
    "shopName": "{{deliveryOrder.shopNick}}",
     "tid": "{{orderLines[0].sourceOrderCode}}",
     "oaid": "{{deliveryOrder.receiverInfo.oaid}}",
    "orderAction": "N",
    "subOrder": "N",
    "source": "QiMen_2C",
    "courierName": "{{courierName}}",
    "courierService": "{{deliveryOrder.logisticsCode}}",
    "courierBillNo": "{{deliveryOrder.expressCode}}",
    "freightPayment": null,
    "orderAllowSplit": null,
    {% if deliveryOrder.totalAmount %}
    "orderTotalAmt": "{{deliveryOrder.totalAmount}}",
    {% endif %}
    "orderCurrency": "CNY",
    "courierFRT": null,
    "courierAcc": null,
    "orderTotalTax": null,
    "shopperAccount": null,
    "orderShipperName": "{{deliveryOrder.senderInfo.name}}",
    "orderShipperPhone": "{{deliveryOrder.senderInfo.mobile}}",
    "orderShipperAddr1": "{{deliveryOrder.senderInfo.area + deliveryOrder.senderInfo.town + deliveryOrder.senderInfo.detailAddress}}",
    "orderShipperAddr2": null,
    "orderShipperPostalCode": "{{deliveryOrder.senderInfo.zipCode}}",
    "orderShipperCity": "{{deliveryOrder.senderInfo.city}}",
    "orderShipperState": "{{deliveryOrder.senderInfo.province}}",
    "orderShipperCountry": "{{deliveryOrder.senderInfo.countryCode}}",
    "orderConsigneeName": "{{deliveryOrder.receiverInfo.name}}",
    "orderConsigneeCompany": "{{deliveryOrder.receiverInfo.company}}",
    "orderConsigneePhone": "{{deliveryOrder.receiverInfo.mobile|truncate(30, true,'')}}",
    "orderConsigneeCountry": "{{deliveryOrder.receiverInfo.countryCode}}",
    "orderConsigneeEmail": "{{deliveryOrder.receiverInfo.email}}",
    "orderConsigneeState": "{{deliveryOrder.receiverInfo.province}}",
    "orderConsigneeCity":  "{{deliveryOrder.receiverInfo.city}}",
    "area": "{{deliveryOrder.receiverInfo.area}}",
    "orderConsigneeAddr1":  "{{deliveryOrder.receiverInfo.town + deliveryOrder.receiverInfo.detailAddress}}",
    "orderConsigneeAddr2":  "{{deliveryOrder.receiverInfo.oaid}}",
    "orderConsigneePostalCode": "{{deliveryOrder.receiverInfo.zipCode}}",
    "remarkforDelivery": null,
    "storeRemark": "{{deliveryOrder.remark}}",
    "warehouseCode": "{{deliveryOrder.warehouseCode}}",
    "deliveryNote": "{{deliveryOrder.orderType}}",
    "mobile": "{{deliveryOrder.receiverInfo.mobile}}",
    {% if deliveryOrder.latestDeliveryTime %}
    "storeOutCutoffDtLoc": "{{deliveryOrder.latestDeliveryTime}}",
    {% endif %}
    "packageType": null,
    "parts": [
      {% for part in orderLines %}
      {
        "partNo": "{{part.itemCode}}",
        "reference3": "{{part.extCode}}",
        "partDescription": "{{part.itemName}}",
        "countryOfOrigin": null,
        "partHsc": null,
        "personalPostalTaxNo":null,
        "partRegistNo": null,
        "partCIQRegistNo": null,
        "vendorCode": null,
        "vendorPoNo": null,
        {% if part.inventoryType == "CC" %}
        "invStatus" :"Damaged",
        {% endif %}
        "vendorPartNo": null,
        "partSize": null,
        "partStyle": null,
        "partIsGift": null,
        "reference1": "{{part.itemCode}}",
        {% if part.actualPrice && part.retailPrice %}
        "partUnitPrice": "{{part.actualPrice | default(part.retailPrice)}}",
        {% endif %}
        "partUnitPriceCur": "CNY",
        "partQty": "{{part.planQty}}",
        "partQtyUnit": null,
        {% if part.total %}
        "partTotalPrice":"{{part.total}}",
        {% endif %}
        "partTotalTax": null,
        "partNetWt": null,
        "partGrossWt": null,
        "partChargeWt":null
      }{% if loop.index != loop.length %},{% endif %}
      {% endfor %}
    ],
    "payMethod": null,
    "payCompanyName": null,
    "payCompanyCode":null,
    "payAmount": null,
    "payCurrency":null,
    "paymentTranscationID": null,
    "paymentTime": null
    }
  ]
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值