需要使用Xidel从json数据中获取多个元素的值。单个元素查询,如:
xidel - -e 'jn:members(json($raw))("client_name")'和
xidel - -e 'jn:members(json($raw))("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")'
xidel - -e 'jn:members(json($raw))[("client_name")("amount")]'发布于 2014-08-25 00:53:15
一些Xidel特定的东西( >=0.8版本):
json($raw)了,$json就足够了xidel - -e‘jn:$json(成员)/ (client_name,amount)’
或者像其他评论中所问的那样:
xidel -e 'string-join($json / (id,your_name,your_name),",")'
在普通的JSONiq中,可以使用库函数:
declare namespace libjn= "http://jsoniq.org/function-library";
string-join(libjn:values(libjn:project($json, ("id", "your_name", "total"))), ",")发布于 2014-08-24 18:22:36
我们需要查看您拥有的JSON,以及您想要的输出的一些解释,无论您想要输出JSON、XML还是字符串。
下面是我使用Xidel的在线演示的一个例子:
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")并返回(如我所想的)字符串序列
Foo: 20
Bar: 30如果您希望返回JSON对象的三个属性,那么您应该能够使用
let $obj := json($raw) return $obj("id") || ', ' || $obj("your_name") || ', ' || $obj("total")如果您不想使用管道,请尝试
let $obj := json($raw) return concat($obj("id"), ", ", $obj("your_name"), ", ", $obj("total"))基于使用命令行的注释
xidel - -e 'let $obj := json($raw) return concat($obj("id"), ", ", $obj("your_name"), ", ", $obj("total"))'应该可以。
甚至是
xidel - -e "let $obj := json($raw) return $obj('id') || ', ' || $obj('your_name') || ', ' || $obj('total')"https://stackoverflow.com/questions/25470100
复制相似问题