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

JSONata如何基于cnt值生成键为1~cnt、值为对应平方的JSON对象?

JSONata生成数字序列平方键值对象方案

需求说明

输入为格式如{"cnt": 5}的JSON,需通过JSONata构造目标对象:

  • 键为1到cnt的数字格式字符串
  • 每个键对应的值为键名数字的平方
    当cnt=5时,预期输出为{"1":1,"2":4,"3":9,"4":16,"5":25}。

原有写法问题

之前使用的表达式:

{"" & [1..cnt] : [1..cnt].($*$)}

运行后得到错误结果{"[1,2,3,4,5]":[1,4,9,16,25]},原因是:

  • 键侧直接对整个[1..cnt]数组做字符串拼接,JSONata会将整个数组转为字符串作为单个键,不会拆分为多个独立键
  • 值侧直接返回整个平方计算后的数组,没有和单个键做一一映射,最终仅生成1组键值对。

正确表达式

{ [1..cnt].$string($): $*$ }

逻辑说明

  • [1..cnt]生成1到输入cnt值的连续数字序列
  • 遍历序列时,通过$string($)将当前遍历到的数字转为字符串,作为动态键
  • 直接计算当前数字的平方$*$作为对应键的值
  • 键位外层的[]是JSONata动态计算键的语法,遍历过程中生成的所有键值对会自动合并为最终对象。

传入cnt=5测试,输出结果完全匹配预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:15:48