【问题标题】:Check values inside of json data检查 json 数据中的值
【发布时间】:2015-09-12 18:19:10
【问题描述】:

你能帮帮我吗?我对 json 数据有响应,不仅想检查 json 的结构,还想检查里面的一些值。 json 数据由内置的 python 类型(dict、list、str、...)表示。您能否建议在 python 中检查任意 json 中的数据的简单方法?

例如让我们采取以下 json:

{"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}

我想检查回复是否在员工列表中包含 3 个元素,其中 firstName 和 lastName 具有特定值。

我知道,如果我将 json 作为 python dict,我可以通过以下方式检查其中的任何值:

data["employees"][0]["firstName"] == ???

也许在这种简单的情况下,这没什么大不了的。但就我而言,我有复杂结构的响应,其中(对我而言)有趣的数据位于不同位置的深处。很难为每个应该检查的值编写类似 data['a']['b'][0]['c'][1] 的东西......有没有更好的方法来检查复杂 json 中的数据?

【问题讨论】:

  • JSON 解码为 Python 类型,是的。你需要给我们一个示例结构和你的代码来显示你卡在哪里,但你所拥有的只是字典、列表、数字、字符串和布尔值。哦,也许还有None 对象。解决这些问题的常规方法适用,数据结构来自 JSON 并不重要。
  • 你看过json模块吗?
  • 是的,json 模块允许解析 json,但我需要更多的东西 - 检查解析后的 json 中的数据。

标签: python json


【解决方案1】:

如果您想检查员工列表中是否有 3 个具有特定名字的元素,您可以使用此处的 check_json_data 函数https://github.com/mlyundin/check-json-data

data = {"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}

exp_data = {"employees": list_verifier([{"firstName":"John"},
    {"firstName": "Anna"},
    {"firstName": "Peter"}], 
linker=lambda item1, item2, i1, i2:item1['firstName'] == item2['firstName'], strict=True)}

print check_json_data(exp_data, data)

【讨论】:

  • 好的。谢谢你。我会将其视为可能的解决方案之一。
猜你喜欢
  • 1970-01-01
  • 2017-07-23
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多