如何使用XQuery提取指定JSON中transation字段下的全部键名
XQuery提取JSON指定键的实现方案
XQuery 3.1及以上版本原生支持JSON处理,解析后的JSON对象会映射为XQuery的map类型,使用map:keys()函数即可提取指定map的所有键。
完整代码示例
xquery version "3.1"; (: 解析输入JSON字符串,若JSON存储为文件可替换为json-doc("你的JSON文件路径") :) let $json := parse-json('{ "id":"743", "groupName":"group1", "transation":{ "101":"success", "102":"rejected", "301":"processing" } }') (: 遍历transation字段下的所有键,按数值排序后输出带双引号的格式 :) for $key in map:keys($json?transation) order by $key cast as xs:integer return concat("\"", $key, "\"")
输出结果
运行上述代码即可得到你需要的输出:
"101" "102" "301"
注意事项
- 需使用支持XQuery 3.1及以上版本的处理器,主流的Saxon、BaseX、eXist-db均满足要求
- 若不需要严格保证键的输出顺序,可以删除
order by子句,大部分处理器会默认保留JSON原始的键顺序,但XQuery规范未强制要求map的键顺序,增加排序逻辑兼容性更强。
内容的提问来源于stack exchange,提问作者Balan
相关产品推荐
相关产品推荐

