JSON(JavaScript Object Notation)是一种基于JavaScript语言的轻量级数据交换格式,它用键值对的方式来表示各种数据类型,包括字符串、数字、布尔值、空值、数组和对象。数组是有序的数据集合,用[]包围,元素用逗号分隔;对象是无序的数据集合,用{}包围,属性用逗号分隔,属性名和属性值用冒号分隔。
JSON可以形成嵌套结构,即数组或对象中包含其他数组或对象。例如:
{
"name": "Alice",
"age": 20,
"hobbies": ["reading", "writing", "singing"],
"friends": [
"name": "Bob",
"age": 21,
"hobbies": ["playing", "coding", "dancing"]
"name": "Charlie",
"age": 19,
"hobbies": ["drawing", "cooking", "watching"]
}
这个例子中,一个对象表示了Alice和她两个朋友的基本信息。这个对象有四个属性,其中hobbies是一个数组,friends也是一个数组,而friends数组中的每个元素又都是一个对象。
遍历JSON就是按顺序访问其中的每个元素或属性,并进行处理。遍历JSON有很多好处:
-
1、提取所需信息:我们可以从嵌套结构的JSON中获取特定信息,比如Alice喜欢什么书或Bob会不会跳舞等。
-
2、修改或更新信息:我们可以修改或更新嵌套结构的JSON中的特定信息,比如Alice年龄加1或Charlie多了一个爱好等。
-
3、格式化或转换信息:我们可以将嵌套结构的JSON以不同形式展示给用户,比如表格、图表、列表等,或者转换成其他格式,比如XML、CSV等。
-
4、分析或处理信息:我们可以对嵌套结构的JSON中的特定信息进行分析或处理,比如计算Alice和Bob有多少共同爱好,或者按年龄排序所有人等。
下面通过一段代码演示如何遍历JSON,提取所有的网站链接,并对zip文件使用爬虫代理IP下载:
import json
import requests
proxy = "http://16ip:pass@www.16yun.cn:8080"
data = {
"articles": {
"article_1": {
"image": "https://www.16yun.cn/1.jpg",
"reviews": [
"attach": "https://www.16yun.cn/test/22.png"
"attaches": [
"https://exa2.com/test/23.png",
"https://exm23.com/file.zip"
"report_to": "https://data.zzz/count_re"
"article_2": {
"image": "https://example.com/3.jpg",
"related_posts": [
"attach": [
"https://exmdy.com/79488.png",
"https://exmdy.com/file/da/eio.zip"
report_to: \"https://dafe/do\"
def extract_and_download_links(data):
if isinstance(data, dict):
for key, value in data.items():
if isinstance(value, str) and value.startswith(("http", \"https\")):
print(value)
if value.endswith(".zip"):
response = requests.get(value, proxies={"http": proxy})
filename = value.split("/")[-1]
with open(filename, \"wb\") as f:
f.write(response.content)
else:
extract_and_download_links(value)
elif isinstance(data, list):
for element in data:
extract_and_download_links(element)
extract_and_download_links(data)
总之,对嵌套结构的JSON进行遍历可以帮助我们更好地理解和利用其中包含的数据,并且提供了更多可能性和灵活性来满足不同场景下的需求。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。所谓轻量级,是与XML文档结构相 比而言的,描述项目的字符少,所以描述相同数据所需的字符个数要少,那么传输速度就会提高,而 流量却会减少。
使用JSON的原因:由于Web和移动平台开发对流量的要求是要尽可能少,对速度的要求是要尽可能快,而轻量级的数据 交换格式JSON就成为理想的数据交换格式。
JSON文档的两种结构为对象和数组。