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

如何使用YAQL将两个列表转换为指定结构的JSON对象

问题分析
  • 你当前写法的核心问题是zip函数的使用逻辑不符合需求:你用长度为2的["name","id"]列表作为zip调用主体,两个长度为3的业务列表作为参数,zip会优先匹配最短列表的长度做截断,最终生成的是[("name","vn1",6), ("id","vn2",4)]结构,转成dict时只会取每组前两个元素作为键值对,所以得到错误输出。
  • 你的需求是要先把名称列表和ID列表按位置一一配对,再把每一组配对值转换成带name、id键的对象,最后把所有对象放到data对应的数组中。
正确YAQL表达式
dict(data => zip(["vn1","vn2","vn3"], [6,4,5]).select(dict(name => $[0], id => $[1])))
运行输出
{
    "data": [
        {
            "name": "vn1",
            "id": 6
        },
        {
            "name": "vn2",
            "id": 4
        },
        {
            "name": "vn3",
            "id": 5
        }
    ]
}
表达式说明
  • 首先用zip(["vn1","vn2","vn3"], [6,4,5])将两个业务列表按位置配对,得到[("vn1",6), ("vn2",4), ("vn3",5)]的元组列表
  • 用select()方法遍历每个元组,将每个元组的第一个元素作为name值、第二个元素作为id值,构造单条对象
  • 最后在外层用dict()包裹,把生成的对象列表赋值给data键即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:54:04