如何通过jsonpath提取“ $”?

时间:2019-08-13 23:13:22

标签: python jsonpath

我想用“ $”提取一个元素。但是它什么也没检索到(main.py的第一个调用)。有人知道怎么了吗?谢谢。

$ cat data.json
{
  "id": {
    "$": {
      "view": "all",
      "id": "sec4",
      "role": "materials-methods"
    }
  }
}

$ cat main.py 
#!/usr/bin/env python
# vim: set noexpandtab tabstop=2 shiftwidth=2 softtabstop=-1 fileencoding=utf-8:

import sys
import json
json_data = json.load(sys.stdin)
import jsonpath_rw_ext
res = jsonpath_rw_ext.match(sys.argv[1], json_data)
for match in res:
    print match.keys()

$ < data.json ./main.py '$."$"'
$ < data.json ./main.py '$."id"'
[u'$']

2 个答案:

答案 0 :(得分:0)

要使用的正确jsonpath表达式为'$.id.$'

注意:请不要将Python2用于新代码,并将现有的Python2代码迁移到Python3

答案 1 :(得分:0)

尝试这个

$[?(!@.$)]

这将忽略所有包含$

的节点