NetSuite高级PDF:发货单(Item Fulfillment)自定义字段JSON数组迭代及赋值问题
解决NetSuite Advanced PDF读取发货单行JSON数组自定义字段的问题
直接用<#assign array = tranline.custcol_my_custom_if_field>无效的核心原因是:这个自定义字段返回的是JSON字符串,并非Freemarker可直接迭代的数组对象。以下是具体解决步骤及代码示例:
前提确认
先确保你的自定义字段custcol_my_custom_if_field是长文本类型(Long Text),且存储的是格式严格合规的JSON数组,示例格式如下:
[{"name": "商品A", "qty": 2}, {"name": "商品B", "qty": 1}]
正确的赋值与迭代方法
利用Freemarker的?eval指令将JSON字符串解析为可迭代数组,同时处理字段为空的情况避免报错:
<!-- 先判断字段是否存在且非空,再转换为数组 --> <#if tranline.custcol_my_custom_if_field?has_content> <#assign jsonArray = tranline.custcol_my_custom_if_field?eval> <!-- 迭代数组中的每个对象 --> <#list jsonArray as item> <p>名称:${item.name},数量:${item.qty}</p> </#list> <#else> <p>无附加数据</p> </#if>
常见问题排查
- 若
?eval报错,检查JSON格式是否正确:需使用双引号、无多余逗号、括号配对完整。 - 确认代码处于发货单行循环内:
tranline对象仅在<#list record.item as tranline>这类行循环中有效,不能直接在单据头部调用。 - 若字段存储的是单个对象而非数组,需调整逻辑(不用
<#list>,直接访问对象属性即可)。
内容的提问来源于stack exchange,提问作者Morris S
相关产品推荐
相关产品推荐

