You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Zoho Deluge POST方法构造Zoho Inventory API的JSON数组参数

问题:Zoho Inventory API请求中line_items数组的构造问题

我在调用包含数据数组的Zoho Inventory API时遇到问题,该API的返回结构如下:

{
    "date": "2015-05-28",
    "reason": "Damaged goods",
    "description": "Just a sample description.",
    "reference_number": "REF-IA-00001",
    "adjustment_type": "quantity",
    "line_items": [
        {
            "item_id": 4815000000044100,
            "name": "Laptop-white/15inch/dell",
            "description": "Just a sample description.",
            "quantity_adjusted": 10,
            "item_total": 244,
            "unit": "qty",
            "is_combo_product": false,
            "adjustment_account_id": 4815000000000388,
            "adjustment_account_name": "Cost of Goods Sold",
            "warehouse_id": 4815000000000390,
            "warehouse_name": "MyWarehouse"
        }
    ]
}

当前的Deluge代码:

headersMap = Map();
headersMap.put("Authorization","Zoho-oauthtoken xxxxxxxxxxxxxxxxx");
parametersMap = Map();
response = invokeurl
[
    url :"https://inventory.zoho.com/api/v1/inventoryadjustments?organization_id=xxxx"
    type :POST
    headers:headersMap
];
dateVal = input.Date_field;
reasonVal = input.Reason;
descriptionVal = input.Description1;
referenceNumberVal = input.Reference_Number;
adjustmentTypeVal = input.Adjustment_Type;
itemIDVal = input.Item_ID;
nameVal = input.Name1;
quantityAdjustedVal = input.Quantity_Adjusted;
itemTotalVal = input.Item_Total;
unitVal = input.Unit;
isComboProductVal = input.Is_Combo_Product;
adjustmentAccountIdVal = input.Adjustment_Account_ID;
adjustmentAccountNameVal = input.Adjustment_Account_Name;
warehouseIdVal = input.Warehouse_ID;
warehouseNameVal = input.Warehouse_Name;

parametersMap.put("date",dateVal);
parametersMap.put("reason",reasonVal);
parametersMap.put("description",descriptionVal);
parametersMap.put("reference_number",referenceNumberVal);
parametersMap.put("adjustment_type",adjustmentTypeVal);

我已为所有所需值创建了变量,但不清楚如何在请求参数中构造"line_items"数组,需要帮助。


解决方案

在Deluge中构造数组类型的请求参数,需按以下步骤操作:

  • 构造单个商品项的Map:用已定义的变量创建包含商品详情的Map对象
  • 创建line_items数组(List):将单个商品Map加入List,多商品可重复添加
  • 将数组加入请求参数Map:把List放入parametersMap,键名为line_items
  • 修正请求调用:补充参数传递并指定Content-Type

完整修改后的代码

headersMap = Map();
headersMap.put("Authorization","Zoho-oauthtoken xxxxxxxxxxxxxxxxx");
// 添加JSON格式请求头,适配Zoho API要求
headersMap.put("Content-Type", "application/json");
parametersMap = Map();

// 获取输入值
dateVal = input.Date_field;
reasonVal = input.Reason;
descriptionVal = input.Description1;
referenceNumberVal = input.Reference_Number;
adjustmentTypeVal = input.Adjustment_Type;
itemIDVal = input.Item_ID;
nameVal = input.Name1;
quantityAdjustedVal = input.Quantity_Adjusted;
itemTotalVal = input.Item_Total;
unitVal = input.Unit;
isComboProductVal = input.Is_Combo_Product;
adjustmentAccountIdVal = input.Adjustment_Account_ID;
adjustmentAccountNameVal = input.Adjustment_Account_Name;
warehouseIdVal = input.Warehouse_ID;
warehouseNameVal = input.Warehouse_Name;

// 构造主请求参数
parametersMap.put("date",dateVal);
parametersMap.put("reason",reasonVal);
parametersMap.put("description",descriptionVal);
parametersMap.put("reference_number",referenceNumberVal);
parametersMap.put("adjustment_type",adjustmentTypeVal);

// 构造单个line_item对象
lineItemMap = Map();
lineItemMap.put("item_id", itemIDVal);
lineItemMap.put("name", nameVal);
lineItemMap.put("description", descriptionVal);
lineItemMap.put("quantity_adjusted", quantityAdjustedVal);
lineItemMap.put("item_total", itemTotalVal);
lineItemMap.put("unit", unitVal);
lineItemMap.put("is_combo_product", isComboProductVal);
lineItemMap.put("adjustment_account_id", adjustmentAccountIdVal);
lineItemMap.put("adjustment_account_name", adjustmentAccountNameVal);
lineItemMap.put("warehouse_id", warehouseIdVal);
lineItemMap.put("warehouse_name", warehouseNameVal);

// 构造line_items数组
lineItemsList = List();
lineItemsList.add(lineItemMap);
// 如有多个商品,重复调用add方法添加其他lineItemMap即可

// 将数组加入请求参数
parametersMap.put("line_items", lineItemsList);

// 发送POST请求,传入参数
response = invokeurl
[
    url :"https://inventory.zoho.com/api/v1/inventoryadjustments?organization_id=xxxx"
    type :POST
    headers:headersMap
    parameters:parametersMap
];

内容的提问来源于stack exchange,提问作者Promise Okoli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:18:13