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

如何在JSONata查询中测试JSON值的数据类型?

好问题!JSONata其实内置了专门的类型检测函数,完全能搞定你说的筛选需求。我给你详细拆解每种JSON类型的判断方法,再结合你的示例给出具体查询:

JSONata数据类型检测指南

数字类型(Number)

要筛选整数或浮点数,用$isNumber()函数——它会在值为数字时返回true。针对你给出的数组,提取数值的查询可以用简化写法:

$filter([null, true, false, 1, 2.3, "a", ["x"], {}, {"y" : "z"}], $isNumber($))

执行后会得到你想要的结果:[1, 2.3]

布尔类型(Boolean)

检测true或false用$isBoolean():

$filter([null, true, false, 1, 2.3, "a", ["x"], {}, {"y" : "z"}], $isBoolean($))

返回结果:[true, false]

字符串类型(String)

判断字符串用$isString():

$filter([null, true, false, 1, 2.3, "a", ["x"], {}, {"y" : "z"}], $isString($))

返回结果:["a"]

数组类型(Array)

检测数组用$isArray():

$filter([null, true, false, 1, 2.3, "a", ["x"], {}, {"y" : "z"}], $isArray($))

返回结果:[["x"]]

对象类型(Object)

普通JSON对象(包括空对象)可以用$isObject()检测:

$filter([null, true, false, 1, 2.3, "a", ["x"], {}, {"y" : "z"}], $isObject($))

返回结果:[{}, {"y" : "z"}]

Null类型

检测null值用$isNull():

$filter([null, true, false, 1, 2.3, "a", ["x"], {}, {"y" : "z"}], $isNull($))

返回结果:[null]

灵活的$type()函数

除了上面的$isXxx()系列函数,JSONata还有$type()函数——它会返回值的类型名称字符串(比如"number"、"boolean")。如果你需要更灵活的类型判断(比如动态匹配类型),可以用它:
比如筛选数字的另一种写法:

$filter([null, true, false, 1, 2.3, "a", ["x"], {}, {"y" : "z"}], $type($) = "number")

效果和$isNumber()完全一致。

这些函数覆盖了所有标准JSON类型的检测场景,你可以根据自己的习惯选择使用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:51:29