首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xidel json xpath -如何获取多个元素的值

Xidel json xpath -如何获取多个元素的值
EN

Stack Overflow用户
提问于 2014-08-24 17:01:41
回答 2查看 2.5K关注 0票数 2

需要使用Xidel从json数据中获取多个元素的值。单个元素查询,如:

代码语言:javascript
复制
xidel - -e 'jn:members(json($raw))("client_name")'

代码语言:javascript
复制
xidel - -e 'jn:members(json($raw))("amount")'

工作很好,但谷歌了很长一段时间,无法找到如何构建多元素提取的表达式。以下尝试失败:

代码语言:javascript
复制
xidel - -e 'jn:members(json($raw))("client_name","amount")'
xidel - -e 'jn:members(json($raw))("client_name,amount")'
xidel - -e 'jn:members(json($raw))("client_name")("amount")'
xidel - -e 'jn:members(json($raw))[("client_name")("amount")]'
EN

回答 2

Stack Overflow用户

发布于 2014-08-25 00:53:15

一些Xidel特定的东西( >=0.8版本):

  1. 你不再需要json($raw)了,$json就足够了
  2. 它有自己的JSON读取语法,这更像是XPath而不是JSONiq:

xidel - -e‘jn:$json(成员)/ (client_name,amount)’

或者像其他评论中所问的那样:

xidel -e 'string-join($json / (id,your_name,your_name),",")'

在普通的JSONiq中,可以使用库函数:

代码语言:javascript
复制
  declare namespace libjn= "http://jsoniq.org/function-library"; 
  string-join(libjn:values(libjn:project($json, ("id", "your_name", "total"))), ",")
票数 1
EN

Stack Overflow用户

发布于 2014-08-24 18:22:36

我们需要查看您拥有的JSON,以及您想要的输出的一些解释,无论您想要输出JSON、XML还是字符串。

下面是我使用Xidel的在线演示的一个例子:

代码语言:javascript
复制
let $data := [
  { "client_name": "Foo", "order": 1, "amount": 20 },
  { "client_name": "Bar", "order": 2, "amount": 30 }]
for $order in jn:members($data)
return $order("client_name") || ": " ||  $order("amount")

并返回(如我所想的)字符串序列

代码语言:javascript
复制
Foo: 20
Bar: 30

如果您希望返回JSON对象的三个属性,那么您应该能够使用

代码语言:javascript
复制
let $obj := json($raw) return $obj("id") || ', ' || $obj("your_name") || ', ' || $obj("total")

如果您不想使用管道,请尝试

代码语言:javascript
复制
let $obj := json($raw) return concat($obj("id"), ", ", $obj("your_name"), ", ", $obj("total"))

基于使用命令行的注释

代码语言:javascript
复制
xidel - -e 'let $obj := json($raw) return concat($obj("id"), ", ", $obj("your_name"), ", ", $obj("total"))'

应该可以。

甚至是

代码语言:javascript
复制
xidel - -e "let $obj := json($raw) return $obj('id') || ', ' || $obj('your_name') || ', ' || $obj('total')"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25470100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档