加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

jmespathjson解析

(2022-11-16 20:52:21)
标签:

json

分类: python/深度学习
import jmespath
data = {
"people": [
    {"name": "a", "state": {"name": "up"} },
    {"name": "b", "state": {"name": "down"} },
    {"name": "c", "state": {"name": "up"} }
]
 }

#ans = jmespath.search('people[0].[name, state.name]', data)
#ans = jmespath.search('people[].[name, state.name]', data)
# ans = jmespath.search('people[].{new_name: name, state_name: state.name}', data)
ans = jmespath.search('people[0].name', data)
# print(ans)
print(jmespath.search('people.*', data))

# https://zhuanlan.zhihu.com/p/458112358
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 所有元素
print(jmespath.search('[]', data) ) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(jmespath.search('[*]', data) ) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
jmespath.search('[:]', data)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 部分数据
print(jmespath.search('[5:8]', data) ) # [6, 7, 8]
jmespath.search('[::-1]', data)  # [9, 8, 7, 6, 5, 4, 3, 2, 1]
jmespath.search('[8:1:-2]', data)  # [9, 7, 5, 3]

data = {"a": "foo", "b": "bar", "c": "baz"}
print(jmespath.search('a', data))  # "foo"

data = {"a": {"b": {"c": {"d": "value"}}}}
print(jmespath.search('a.b.c.d', data) ) # "value"

data = {"a": {
  "b": {
    "c": [
      {"d": [0, [1, 2]]},
      {"d": [3, 4]}
    ]
  }
}}
print(jmespath.search('a.b.c[0].d[1][0]', data) ) # 1

data = {
  "ops": {
    "functionA": {"numArgs": 2},
    "functionB": {"numArgs": 3},
    "functionC": {"variadic": True}
  }
}
print(jmespath.search('ops.*.numArgs', data))  # [2, 3]

data = {
    "machines": [
        {"name": "a", "state": "running"},
        {"name": "b", "state": "stopped"},
        {"name": "b", "state": "running"}
    ]
}
jmespath.search("machines[?state=='running'].name", data)  # ['a', 'b']

data = {
    "people": [
        {"first": "James", "last": "d"},
        {"first": "James", "last": "e"},
        {"first": "Jayden", "last": "f"},
        {"missing": "different"}
    ],
    "foo": {"bar": "baz"}
}
print(jmespath.search("people[?first=='James'] ", data) ) # [{'first': 'James', 'last': 'd'}, {'first': 'James', 'last': 'e'}]
print(jmespath.search("people[?first=='James'] | [?last=='e'] ", data) ) # [{'first': 'James', 'last': 'e'}]
print(jmespath.search("people[?first=='James'] | [?last=='e'] | [0]", data) ) # {'first': 'James', 'last': 'e'}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有