专栏首页ITCoder在 Python 中解析 JSON 数据

在 Python 中解析 JSON 数据

JSON 是一个人类可读的,基于文本的数据格式。

它独立于语言,并且可以在应用之间进行数据交换。

在这篇文章中,我们将会解释在 Python 中如何解析 JSON 数据。

一、Python JSON

json模块是Python 标准库的一部分,它允许你对 JSON 数据进行编码和解码。

JSON 是一个字符串,代表数据。编码或者序列化意味着将一个 Python 对象转换成 JSON 字符串,以便存储到文件中或者通过网络进行传输。解码或者反序列化和编码相反,将 JSON 字符串转换成 Python 对象。

下面是一个表格,表示 Python 对象和 JSOn 对应的数据结构:

Python

JSON

dict

object

list, tuple

array

str

string

int, float

number

True

true

False

false

None

null

想要处理 JSON,在你文件的顶部简单导入 JSON 模块:

import json

二、在 Python 中编码 JSON

json模块有两个方法用来将 Python 对象编码成 JSON,dump()dumps()

dump() 方法将输出发送到文件中。它有两个参数,用来编码的对象,和文件。下面是一个例子:

data = {
    "country": "Germany",
    "vehicle": {
        "name": "Volkswagen",
        "model": "T-Roc"
    }
}

with open("file.json", "w") as file:
    json.dump(data, file)

如果你运行脚本,这将创建一个名为file.json

{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}

dumps()方法和dump()一样,但是不会将输出发送到文件,而是返回一个字符串:

data = {
    "country": "Germany",
    "vehicle": {
        "name": "Volkswagen",
        "model": "T-Roc"
    }
}

json.dumps(data)

输出:

'{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}'

两个方法都有相同的关键字参数。如果你想调试 JSON 数据,你可能想指定缩进:

data = {
    "country": "Germany",
    "vehicle": {
        "name": "Volkswagen",
        "model": "T-Roc"
    }
}

print(json.dumps(data, indent=2))

输出:

{
  "country": "Germany",
  "vehicle": {
    "name": "Volkswagen",
    "model": "T-Roc"
  }
}

三、在 Python 中解码 JSON

想要将 JSON 数据转换成 Python 对象,使用load()loads()方法。

load()方法从文件中读取 JSON 结构,并转换成 Python 对象。

比如说我们有下面的 JSON 文件:

[
  {
    "userId": 1,
    "id": 1,
    "title": "Meet with Lisa",
    "completed": true
  },
  {
    "userId": 1,
    "id": 2,
    "title": "Design a prototype",
    "completed": false
  }
]

想要将 JSON 数据转换成一个 Python ,你可以像下面一样:

import json

with open('file.json') as f:
  data = json.load(f)

type(data)

这个 JSON 数据被转换成一个 Python 列表,你可以在你的代码中使用它。

输出:

<class 'list'>

loads() 方法将一个JSON 字符串转换成一个 Python 对象:

import json

json_str= '{"userId": "1", "id": "1", "title": "Meet with Lisa", "completed": "True"}'

print(json.loads(json_str))

字符串被转成一个 Python 字典:

{'userId': '1', 'id': '1', 'title': 'Meet with Lisa', 'completed': 'True'}

这是一个更高级的例子,显示如何请求 API,并解码 JSON 数据:

import json
import requests

response = requests.get("https://jsonplaceholder.typicode.com/users")
users = json.loads(response.text)

print(users)

四、总结

我们已经展示了在 Python 中如何编码和解码 JSON 数据。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在Java中如何解析JSON格式数据?

    萤火虫叔叔
  • Python-数据解析-json模块

    其中 loads() 和 load() 方法用于 python 对象的反序列化,dumps() 和 dump() 方法用于 python 对象的序列化。

    小团子
  • Json海量数据解析Json海量数据解析

    ​ 在android开发中,app和服务器进行数据传输时大多数会用到json。在解析json中通常会用到以下几种主流的解析库:jackson、gson、fa...

    用户2929716
  • iOS中JSON数据的解析 原

    官方为我们提供的解析JSON数据的类是NSJSONSerialization,首先我们先来看下这个类的几个方法:

    珲少
  • js中读取解析json数据

    在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。

    IT人一直在路上
  • Python深层解析json数据之JsonPath

    我们在做接口自动化时,一般接口响应的都是json数据体,对响应数据进行提取使用或断言,当数据量很大或层级很深时,就会变得很麻烦,于是就可以用到...

    王大力测试进阶之路
  • Java数据解析---JSON

    听着music睡
  • Python3 JSON 数据解析

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。

    py3study
  • Python中Json解析的坑

    JSON虽好,一点点不对,能把人折腾死: 1、变量必须要用双引号 2、如果是字符串,必须要用引号包起来 Error:Expecting : delimiter:...

    用户1075292

扫码关注云+社区

领取腾讯云代金券