在Python中使用JSON轻而易举,这将使您立即入门。

Python有两种数据类型,它们共同构成了使用JSON的理想工具:字典和列表。让我们探索如何:

  • 加载和编写JSON
  • 在命令行上漂亮打印并验证JSON
  • 使用JMESPath对JSON文档进行高级查询

1.解码JSON

Python附带了功能强大且优雅的 JSON库。它可以通过以下方式导入:


python 查找json中的元素 python json 搜索_JSON


解码JSON字符串非常简单 json.loads(…) (加载字符串的简称)。

它转换为:

  • 反对字典
  • 数组到列表,
  • 布尔值,整数,浮点数和字符串可以识别其含义,并将在Python中转换为正确的类型
  • 任何 null 都将转换为Python的 None 类型

这是一个实际的例子 json.loads :


python 查找json中的元素 python json 搜索_python 查找json中的元素_02


2.编码JSON

反之亦然。使用 json.dumps(…) (“转储为字符串”的缩写)将包含字典,列表和其他本机类型的Python对象转换为字符串:


python 查找json中的元素 python json 搜索_python中json的读取顺序_03


这是完全相同的文档,转换回字符串!如果要使JSON文档更易被人类阅读,请使用indent选项:


python 查找json中的元素 python json 搜索_python 查找json中的元素_04


python 查找json中的元素 python json 搜索_字符串_05


3.命令行用法

JSON库也可以从命令行使用,以 验证 JSON 并进行 漂亮打印:


python 查找json中的元素 python json 搜索_Python_06


python 查找json中的元素 python json 搜索_JSON_07

jq默认会漂亮地打印您的JSON

4.使用JMESPath搜索JSON

JMESPath是JSON的查询语言。它使您可以轻松地从JSON文档中获取所需的数据。如果您以前使用过JSON,您可能知道获取嵌套值很容易。

例如: doc["person"]["age"] 将在如下所示的文档中为您提供年龄的嵌套值:


python 查找json中的元素 python json 搜索_python 查找json中的元素_08


但是,如果您想从一系列人员中提取所有年龄段,在这样的文档中怎么办:


python 查找json中的元素 python json 搜索_python 查找json中的元素_09


我们可以编写一个简单的循环,遍历所有人员。十分简单。但是循环很慢,会给您的代码带来复杂性。这就是JMESPath进来的地方!

这个JMESPath表达式将完成工作:


python 查找json中的元素 python json 搜索_Python_10


它将返回一个所有年龄的数组: [38, 45, 14]。

假设您要过滤列表,仅获取名为“ erik”的人的年龄。您可以使用过滤器执行此操作:


python 查找json中的元素 python json 搜索_python中json的读取顺序_11


看看这有多自然和快速?

JMESPath不是Python标准库的一部分,这意味着您需要使用pip 或 进行安装 pipenv。例如, 在虚拟环境中使用 时 :pip


python 查找json中的元素 python json 搜索_python 查找json中的元素_12


您现在就可以开始尝试了!