JSONata提供了条件表达式和谓词,可用于从JSON树中选择值。
但是,我还没有找到一种方法来测试JSON值的数据类型。
例如,给定数组:
[null, true, false, 1, 2.3, "a", ["x"], {}, {"y" : "z}]
我只想提取数值。
[1, 2.3]
问:在JSONata查询中,如何测试值的JSON数据类型(null、布尔值、数字、字符串、数组、对象)?
发布于 2018-04-18 21:22:53
目前还没有办法在JSONata中做到这一点。不过,值得一提的是增强请求。
发布于 2019-04-22 17:09:33
哇,今天发现了这个很酷的JSONata。这是我的尝试:
[null, true, false, 1, 2.3, "a", ["x"], {}, {"y" : "z"}]
*[$ ~> /^[0-9\.]{1,}$/m]
发布于 2020-02-17 20:01:07
JSONata提供了$type
-method来检查JSON值的数据类型。例如。以下代码片段将以https://try.jsonata.org格式返回发票示例数据中的值的数据类型。
Account.Order.Product.{
"priceType": $type(Price),
"productNameType": $type($.'Product Name'),
"descriptionType": $type(Description)
}
结果是:
[
{
"priceType": "number",
"productNameType": "string",
"descriptionType": "object"
},
{
"priceType": "number",
"productNameType": "string",
"descriptionType": "object"
},
{
"priceType": "number",
"productNameType": "string",
"descriptionType": "object"
},
{
"priceType": "number",
"productNameType": "string",
"descriptionType": "object"
}
]
通过将示例JSON中的Price
和Product Name
的值更改为null
,该特定对象的结果将更改为:
{
"priceType": "null",
"productNameType": "null",
"descriptionType": "object"
},
可以检查“null”、“number”、“string”、“array”、“object”、“boolean”。
出于我的考虑,我使用它在将日期转换为毫秒时检查空值:
'enddate': $type($v.enddate) = 'null' ? null : $toMillis($v.enddate),
https://stackoverflow.com/questions/49712517
复制相似问题