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

使用Liquid模板语言合并对象数组时XML转JSON遇字段为空问题

问题分析与解决方案

你的核心问题是遍历的目标节点错误,导致循环从未执行,最终生成空字符串。

问题根源

XML中<cc-emails type="array">是数组的容器节点,真正的邮箱列表是它的直接子节点<cc-email>的集合,路径应为ticket.cc-email.cc-emails.cc-email;同理,fwd-email的集合路径是ticket.cc-email.fwd-emails.fwd-email。你之前遍历的是容器节点ticket.cc-email.cc-emails,而非实际的数组元素集合,所以循环不会触发,列表始终为空。

修正后的Liquid模板

方案一:简化写法(推荐)

直接利用Liquid的join过滤器处理数组节点集合,无需手动循环:

{
    "account-id":"{{ ticket.account-id }}",
    "cc-email":"{{ ticket.cc-email.cc-emails.cc-email | join: ',' }}",
    "fwd-email":"{{ ticket.cc-email.fwd-emails.fwd-email | join: ',' }}"
}

方案二:显式循环写法

如果需要更灵活的处理逻辑,可保留循环但修正遍历路径:

{
    "account-id":"{{ ticket.account-id }}",

    {% assign cc_list = '' | split: ',' %}
    {% for email in ticket.cc-email.cc-emails.cc-email %}
        {% assign cc_list = cc_list | push: email %}
    {% endfor %}
    "cc-email":"{{ cc_list | join: ',' }}",

    {% assign fwd_list = '' | split: ',' %}
    {% for email in ticket.cc-email.fwd-emails.fwd-email %}
        {% assign fwd_list = fwd_list | push: email %}
    {% endfor %}
    "fwd-email":"{{ fwd_list | join: ',' }}"
}

验证说明

修正后,模板会正确遍历所有<cc-email>和<fwd-email>节点,将它们的文本内容拼接为逗号分隔的字符串,与你期望的JSON输出一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:36:37