jmeter JSR223 PostProcessor 操作

本文介绍了如何在JMeter中利用JSR223组件和Groovy语言处理复杂的订单附加费数据。通过遍历JSON响应,构造不同产品的附加费列表,如海运费等,并将结果存储为变量,便于后续测试使用。同时,文章指出当JSON字段返回null时,转化为字符串的问题,以及提供的解决方案。
摘要由CSDN通过智能技术生成

背景

最近项目需要做创建订单的性能测试,但是创建订单时的附加费入参很复杂,有一大段的附加费需要构造,且不同的产品附加费还不一样,数据结构是数组类型。

难点

网上教程大部分都是提取json和字符串的,关于数组拼接的介绍很少,花了一点时间,终于找到了一种比较简单的方式。

BeanShell Sampler虽然也可以实现,但写起来很复杂,只支持java语法,什么都要自己写,报错很难定位,而自己对于java语法不是特别熟悉,对python稍微熟悉一点。

解决办法

引入了JSR223组件元素,提供了使用多种编程语言开发测试的可能性,其中包括了性能较高的Groovy语言。

在使用JSR223组件元素开发测试时,可以使用其内置的变量,有助于精简脚本,提高开发测试的效率。

我这里选择了JSR223 PostProcessor,可以看到这里面既有java语法,也有别的语法。

定义一个列表:

def blCharge = [];

往列表里加入元素

gp20Charge << 	"{\"chargeName\":\"海运费\",\"chargeType\":\"OCEAN_FEE\",\"price\":111,\"currency\":\"USD\",\"toCurrency\":\"USD\",\"transitPortId\":null,\"paymentTermsType\":\"P\"}";

常用内置变量列表

变量功能
ctx访问当前线程的上下文
vars读写当前变量
props读写当前属性
sampler访问当前取样器
prev访问当前取样器结果
log写日志文件

使用示例:prev.getResponseDataAsString(); // 获取Response,为字符串,需要转为json对象

注意点

String chargeType = responseObj.get(0).get(“chargeInfo”).get(0).get(“chargeDetail”).get(i).get(“chargeType”);
如果后面的字段返回的结果是null,那么chargeType的结果是字符串"null",这个还没好的解决方案。

完整版代码如下

import com.alibaba.fastjson.*;

String response = prev.getResponseDataAsString();  // 获取Response,为字符串,需要转为json对象
List responseObj = JSON.parseArray(response);  // 整个Response转为JSON对象

log.info(responseObj.get(0).get("chargeInfo").get(0).get("chargeDetail").size().toString());

blChargeSize = responseObj.get(0).get("chargeInfo").get(0).get("chargeDetail").size();
gp20ChargeSize = responseObj.get(0).get("chargeInfo").get(1).get("chargeDetail").size();
gp40ChargeSize = responseObj.get(0).get("chargeInfo").get(2).get("chargeDetail").size();
hq40ChargeSize = responseObj.get(0).get("chargeInfo").get(3).get("chargeDetail").size();


def blCharge = [];
def gp20Charge = [];
def gp40Charge = [];
def hq40Charge = [];
gp20Charge << 	"{\"chargeName\":\"海运费\",\"chargeType\":\"OCEAN_FEE\",\"price\":111,\"currency\":\"USD\",\"toCurrency\":\"USD\",\"transitPortId\":null,\"paymentTermsType\":\"P\"}";
gp40Charge << 	"{\"chargeName\":\"海运费\",\"chargeType\":\"OCEAN_FEE\",\"price\":222,\"currency\":\"USD\",\"toCurrency\":\"USD\",\"transitPortId\":null,\"paymentTermsType\":\"P\"}";
hq40Charge << 	"{\"chargeName\":\"海运费\",\"chargeType\":\"OCEAN_FEE\",\"price\":333,\"currency\":\"USD\",\"toCurrency\":\"USD\",\"transitPortId\":null,\"paymentTermsType\":\"P\"}";

for (int i ;i<blChargeSize;i++){
	String chargeName = responseObj.get(0).get("chargeInfo").get(0).get("chargeDetail").get(i).get("chargeName");
	String chargeType = responseObj.get(0).get("chargeInfo").get(0).get("chargeDetail").get(i).get("chargeType");
	String currency = responseObj.get(0).get("chargeInfo").get(0).get("chargeDetail").get(i).get("currency");
	String chargeHisId = responseObj.get(0).get("chargeInfo").get(0).get("chargeDetail").get(i).get("chargeHisId");
	String paymentTermsType = responseObj.get(0).get("chargeInfo").get(0).get("chargeDetail").get(i).get("paymentTerms");
	String price = responseObj.get(0).get("chargeInfo").get(0).get("chargeDetail").get(i).get("price");
	String transhipmentPortId = responseObj.get(0).get("chargeInfo").get(0).get("chargeDetail").get(i).get("transhipmentPortId");
	String charge = "{\"chargeName\":\""+chargeName+"\",\"chargeType\":\""+chargeType+"\",\"chargeHisId\":\""+chargeHisId+"\",\"price\":"+price+",\"currency\":\""+currency+"\",\"toCurrency\":\"CNY\",\"transitPortId\":"+transhipmentPortId+",\"paymentTermsType\":\""+paymentTermsType+"\"}";
	blCharge << charge;
	}
for (int i ;i<gp20ChargeSize;i++){
	String chargeName = responseObj.get(0).get("chargeInfo").get(1).get("chargeDetail").get(i).get("chargeName");
	String chargeType = responseObj.get(0).get("chargeInfo").get(1).get("chargeDetail").get(i).get("chargeType");
	String currency = responseObj.get(0).get("chargeInfo").get(1).get("chargeDetail").get(i).get("currency");
	String chargeHisId = responseObj.get(0).get("chargeInfo").get(1).get("chargeDetail").get(i).get("chargeHisId");
	String paymentTermsType = responseObj.get(0).get("chargeInfo").get(1).get("chargeDetail").get(i).get("paymentTerms");
	String price = responseObj.get(0).get("chargeInfo").get(1).get("chargeDetail").get(i).get("price");
	String transhipmentPortId = responseObj.get(0).get("chargeInfo").get(1).get("chargeDetail").get(i).get("transhipmentPortId");
	String charge = "{\"chargeName\":\""+chargeName+"\",\"chargeType\":\""+chargeType+"\",\"chargeHisId\":\""+chargeHisId+"\",\"price\":"+price+",\"currency\":\""+currency+"\",\"toCurrency\":\"CNY\",\"transitPortId\":"+transhipmentPortId+",\"paymentTermsType\":\""+paymentTermsType+"\"}";
	gp20Charge << charge;
	}
for (int i ;i<gp20ChargeSize;i++){
	String chargeName = responseObj.get(0).get("chargeInfo").get(2).get("chargeDetail").get(i).get("chargeName");
	String chargeType = responseObj.get(0).get("chargeInfo").get(2).get("chargeDetail").get(i).get("chargeType");
	String currency = responseObj.get(0).get("chargeInfo").get(2).get("chargeDetail").get(i).get("currency");
	String chargeHisId = responseObj.get(0).get("chargeInfo").get(2).get("chargeDetail").get(i).get("chargeHisId");
	String paymentTermsType = responseObj.get(0).get("chargeInfo").get(2).get("chargeDetail").get(i).get("paymentTerms");
	String price = responseObj.get(0).get("chargeInfo").get(2).get("chargeDetail").get(i).get("price");
	String transhipmentPortId = responseObj.get(0).get("chargeInfo").get(2).get("chargeDetail").get(i).get("transhipmentPortId");
	String charge = "{\"chargeName\":\""+chargeName+"\",\"chargeType\":\""+chargeType+"\",\"chargeHisId\":\""+chargeHisId+"\",\"price\":"+price+",\"currency\":\""+currency+"\",\"toCurrency\":\"CNY\",\"transitPortId\":"+transhipmentPortId+",\"paymentTermsType\":\""+paymentTermsType+"\"}";
	gp40Charge << charge;
	}
for (int i ;i<gp20ChargeSize;i++){
	String chargeName = responseObj.get(0).get("chargeInfo").get(3).get("chargeDetail").get(i).get("chargeName");
	String chargeType = responseObj.get(0).get("chargeInfo").get(3).get("chargeDetail").get(i).get("chargeType");
	String currency = responseObj.get(0).get("chargeInfo").get(3).get("chargeDetail").get(i).get("currency");
	String chargeHisId = responseObj.get(0).get("chargeInfo").get(3).get("chargeDetail").get(i).get("chargeHisId");
	String paymentTermsType = responseObj.get(0).get("chargeInfo").get(3).get("chargeDetail").get(i).get("paymentTerms");
	String price = responseObj.get(0).get("chargeInfo").get(3).get("chargeDetail").get(i).get("price");
	String transhipmentPortId = responseObj.get(0).get("chargeInfo").get(3).get("chargeDetail").get(i).get("transhipmentPortId");
	String charge = "{\"chargeName\":\""+chargeName+"\",\"chargeType\":\""+chargeType+"\",\"chargeHisId\":\""+chargeHisId+"\",\"price\":"+price+",\"currency\":\""+currency+"\",\"toCurrency\":\"CNY\",\"transitPortId\":"+transhipmentPortId+",\"paymentTermsType\":\""+paymentTermsType+"\"}";
	hq40Charge << charge;
	}
vars.put("blCharge",blCharge.toString());
vars.put("gp20Charge",gp20Charge.toString());
vars.put("gp40Charge",gp40Charge.toString());
vars.put("hq40Charge",hq40Charge.toString());
log.info(blCharge.toString());
log.info(gp20Charge.toString());
log.info(gp40Charge.toString());
log.info(hq40Charge.toString()); 

返回值参数(是json格式,大家感兴趣可以自行解析一下)

[{"key":1,"chargeInfo":[{"chargeModel":"BL","cntrSize":null,"chargeDetail":[{"chargeCode":"MSC","chargeName":"远期品名组测试2","chargeType":"CUS","chargeTag":"OCEAN","price":10,"currency":"USD","chargeHisId":"8aaade9f783a873101783e00efa6007a","transhipmentPortId":null,"category":null,"paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"DOC","chargeName":"DOC","chargeType":"DOC","chargeTag":"POR","price":450,"currency":"CNY","chargeHisId":"8aaa66a9703cbd02017042fe2ce9004f","transhipmentPortId":null,"category":null,"paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"出口单证服务费103","chargeType":"BL_LOCAL","chargeTag":"POR","price":50,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b96a7700f2","transhipmentPortId":null,"category":null,"paymentTerms":"P","isFollowOceanFee":false}]},{"chargeModel":"CNTR","cntrSize":"20GP","chargeDetail":[{"chargeCode":"255","chargeName":"订舱费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa65e76f357234016f35d01224002b","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"订舱操作费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":50,"currency":"CNY","chargeHisId":"8aaa3dd270aa4d520170adc210e0001a","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"码头安保费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":2,"currency":"CNY","chargeHisId":"8aaa3dd270aa4d520170adc210d50015","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"集装箱设备管理费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa3dd270aa4d520170adc210ea001f","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"铅封费SLF","chargeType":"THC","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbd6098d","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"THC","chargeType":"THC","chargeTag":"POR","price":646,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9f820078a","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"BKF","chargeName":"订舱操作费","chargeType":"THC","chargeTag":"POR","price":50,"currency":"CNY","chargeHisId":"8aaa02346b9839da016b984c430c32b1","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"EEC","chargeName":"集装箱设备管理费","chargeType":"THC","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa02346b9839da016b984c431b32b6","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"订舱费MIS","chargeType":"THC","chargeTag":"POR","price":180,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbb6097e","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"码头安保费PSL","chargeType":"THC","chargeTag":"POR","price":8,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbc00983","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"EIR服务费","chargeType":"THC","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbca0988","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"SUBTO","chargeName":"subto","chargeType":"CNTR_OCEAN","chargeTag":"OCEAN","price":60,"currency":"USD","chargeHisId":"8aaade9f783a873101783e0854ee0098","transhipmentPortId":null,"category":"OCEAN_EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"MSC","chargeName":"远期品名组测试2","chargeType":"CNTR_OCEAN","chargeTag":"OCEAN","price":100,"currency":"USD","chargeHisId":"8aaade9f783a873101783e00f0210080","transhipmentPortId":null,"category":"OCEAN_EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"TET","chargeName":"TET","chargeType":"CNTR_OCEAN","chargeTag":"OCEAN","price":111,"currency":"USD","chargeHisId":"8aaaa9137b5c8cb8017b5d9bcbd50163","transhipmentPortId":null,"category":"OCEAN_EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false}]},{"chargeModel":"CNTR","cntrSize":"40GP","chargeDetail":[{"chargeCode":"255","chargeName":"订舱费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":40,"currency":"CNY","chargeHisId":"8aaa65e76f357234016f35d01224002b","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"订舱操作费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":100,"currency":"CNY","chargeHisId":"8aaa3dd270aa4d520170adc210e0001a","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"码头安保费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":3,"currency":"CNY","chargeHisId":"8aaa3dd270aa4d520170adc210d50015","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"集装箱设备管理费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa3dd270aa4d520170adc210ea001f","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"铅封费SLF","chargeType":"THC","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbd6098d","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"THC","chargeType":"THC","chargeTag":"POR","price":982,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9f820078a","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"BKF","chargeName":"订舱操作费","chargeType":"THC","chargeTag":"POR","price":100,"currency":"CNY","chargeHisId":"8aaa02346b9839da016b984c430c32b1","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"EEC","chargeName":"集装箱设备管理费","chargeType":"THC","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa02346b9839da016b984c431b32b6","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"订舱费MIS","chargeType":"THC","chargeTag":"POR","price":280,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbb6097e","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"码头安保费PSL","chargeType":"THC","chargeTag":"POR","price":12,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbc00983","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"EIR服务费","chargeType":"THC","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbca0988","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"SUBTO","chargeName":"subto","chargeType":"CNTR_OCEAN","chargeTag":"OCEAN","price":90,"currency":"USD","chargeHisId":"8aaade9f783a873101783e0854ee0098","transhipmentPortId":null,"category":"OCEAN_EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"MSC","chargeName":"远期品名组测试2","chargeType":"CNTR_OCEAN","chargeTag":"OCEAN","price":200,"currency":"USD","chargeHisId":"8aaade9f783a873101783e00f0210080","transhipmentPortId":null,"category":"OCEAN_EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"TET","chargeName":"TET","chargeType":"CNTR_OCEAN","chargeTag":"OCEAN","price":222,"currency":"USD","chargeHisId":"8aaaa9137b5c8cb8017b5d9bcbd50163","transhipmentPortId":null,"category":"OCEAN_EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false}]},{"chargeModel":"CNTR","cntrSize":"40HQ","chargeDetail":[{"chargeCode":"255","chargeName":"订舱费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":170,"currency":"CNY","chargeHisId":"8aaa65e76f357234016f35d01224002b","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"订舱操作费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":100,"currency":"CNY","chargeHisId":"8aaa3dd270aa4d520170adc210e0001a","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"码头安保费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":3,"currency":"CNY","chargeHisId":"8aaa3dd270aa4d520170adc210d50015","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"集装箱设备管理费","chargeType":"CNTR_LOCAL","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa3dd270aa4d520170adc210ea001f","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"铅封费SLF","chargeType":"THC","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbd6098d","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"THC","chargeType":"THC","chargeTag":"POR","price":982,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9f820078a","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"BKF","chargeName":"订舱操作费","chargeType":"THC","chargeTag":"POR","price":100,"currency":"CNY","chargeHisId":"8aaa02346b9839da016b984c430c32b1","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"EEC","chargeName":"集装箱设备管理费","chargeType":"THC","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa02346b9839da016b984c431b32b6","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"订舱费MIS","chargeType":"THC","chargeTag":"POR","price":280,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbb6097e","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"码头安保费PSL","chargeType":"THC","chargeTag":"POR","price":12,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbc00983","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":null,"chargeName":"EIR服务费","chargeType":"THC","chargeTag":"POR","price":30,"currency":"CNY","chargeHisId":"8aaa801870e1e63a0170e2b9fbca0988","transhipmentPortId":null,"category":"EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"SUBTO","chargeName":"subto","chargeType":"CNTR_OCEAN","chargeTag":"OCEAN","price":90,"currency":"USD","chargeHisId":"8aaade9f783a873101783e0854ee0098","transhipmentPortId":null,"category":"OCEAN_EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"MSC","chargeName":"远期品名组测试2","chargeType":"CNTR_OCEAN","chargeTag":"OCEAN","price":300,"currency":"USD","chargeHisId":"8aaade9f783a873101783e00f0210080","transhipmentPortId":null,"category":"OCEAN_EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false},{"chargeCode":"TET","chargeName":"TET","chargeType":"CNTR_OCEAN","chargeTag":"OCEAN","price":222,"currency":"USD","chargeHisId":"8aaaa9137b5c8cb8017b5d9bcbd50163","transhipmentPortId":null,"category":"OCEAN_EXTRA_CHARGE","paymentTerms":"P","isFollowOceanFee":false}]}]},{"key":1,"chargeInfo":[{"chargeModel":"BL","cntrSize":null,"chargeDetail":[]}]}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值