如何使用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
相关产品推荐
相关产品推荐

