技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營

贊助商

分類目錄

贊助商

最新文章

搜索

5個示例介紹Python如何讀、寫操作JSON文件

作者:admin    時間:2021-12-27 9:5:47    瀏覽:

本文通過5個示例,介紹Python如何讀、寫操作JSON文件。

JSON 是將數(shù)據(jù)表示為文件中的文本的輕量級格式,其語法借用了用于創(chuàng)建 JavaScript 對象的語法。海量數(shù)據(jù)轉(zhuǎn)換為JSON格式,便于各種編程語言的處理和傳輸?shù)狡渌?jié)點。它是處理 API 調(diào)用時最常用的請求和響應(yīng)格式。

 5個Python示例讀寫操作JSON文件

JSON 格式接受的數(shù)據(jù)類型

JSON 鍵必須是字符串。大多數(shù)語言隱式地將任何其他數(shù)據(jù)類型轉(zhuǎn)換為字符串。JSON 值可以是字符串、布爾值、整數(shù)、浮點數(shù)、另一個 JSON 對象或 JSON 數(shù)組。

以下是有效 JSON 文件 (data.json) 的示例:

{
  "name": "Jason",
  "age": 21,
  "address": {
    "street": "1 Main Street",
    "city": "Los Angeles",
    "zipcode": 90001
  },
  "married": false
}

這里,“address”鍵的值是另一個 JSON。鍵“married”是具有布爾類型的值。

請注意,JSON 不支持注釋。此處給出的所有代碼片段也與 python 3 兼容。

Python 中最接近 JSON 的數(shù)據(jù)類型是字典。Python 使用名為 json 的模塊(一個內(nèi)置的 Python 庫)支持字典、JSON 和字符串的相互轉(zhuǎn)換。

Python 讀取 JSON 文件

JSON 文件通常具有擴(kuò)展名 .json。但是,python 支持解析任何文件擴(kuò)展名,直到它包含有效的 JSON。要讀取 json 文件并將數(shù)據(jù)填充到字典中,請使用 json.load()。該函數(shù)將文件對象作為參數(shù)。以下是說明 json.load() 使用的示例。

示例代碼片段:

import json

with open("data.json") as f:
    p = json.load(f)
    print(p, type(p))
    print(p["name"], "is", "married" if p["married"] else "not married")

上面例子的輸出:

{'name': 'Jason', 'age': 21, 'address': {'street': '1 Main Street', 'city': 'Los Angeles', 'zipcode': 90001}, 'married': False} <class 'dict'>
Jason is not married

這里 f 是文件對象。json.load() 返回一個字典。

上面的代碼片段使用 python if else 格式。

Python將字符串或字節(jié)數(shù)組讀入字典

Json 模塊允許用戶將 json 以字符串、字節(jié)或字節(jié)數(shù)組的形式解析為字典。這是使用函數(shù) json.loads() 完成的。請注意函數(shù)名稱與前面描述的函數(shù)的相似之處。load() 需要一個文件對象作為參數(shù),而 load() 需要一個字符串作為參數(shù)。前者讀取文件并隱式調(diào)用后者,即loads()。

示例代碼片段:

import json

with open("data.json") as f:
    file_data = f.read()
p = json.loads(file_data)
print(p, type(p))
print(p["name"], "is", "married" if p["married"] else "not married")

上面例子的輸出:

{'name': 'Jason', 'age': 21, 'address': {'street': '1 Main Street', 'city': 'Los Angeles', 'zipcode': 90001}, 'married': False} <class 'dict'>
Jason is not married

Python將字典寫入 JSON 文件

只能將字符串、字節(jié)數(shù)組或字節(jié)寫入文件。因此,字典必須轉(zhuǎn)換為 JSON 格式的字符串才能寫入 json 文件。這是使用函數(shù) json.dump() 完成的。該函數(shù)將字典和文件對象作為參數(shù)。它不返回任何東西。以下是相同的說明。

示例代碼片段:

import json

json_dict = {
    "name": "Jason",
    "age": 21,
    "address": {
        "street": "1 Main Street",
        "city": "Los Angeles",
        "zipcode": 90001
    },
    "married": False
}

print("Type of json_dict:", type(json_dict))

with open("data.json", "w") as f:
    json.dump(json_dict, f, indent=4)

上面例子的輸出:

Type of json_dict: <class 'dict'>

data.json
{
    "name": "Jason",
    "age": 21,
    "address": {
        "street": "1 Main Street",
        "city": "Los Angeles",
        "zipcode": 90001
    },
    "married": false
}

請注意,json 文件使用制表符格式化為 4 個空格。這是由于 json.dump() 函數(shù)中的“indent”參數(shù)而生效的。

Python將 JSON 格式的字符串寫入文件

在前面的示例中,將字典解析為字符串并寫入文件是在一個語句中使用一個函數(shù)完成的。在這里,這一步分為兩步:首先將字典轉(zhuǎn)換為字符串,保存到變量中,然后寫入文件。

示例python代碼片段:

import json

json_dict = {
    "name": "Jason",
    "age": 21,
    "address": {
        "street": "1 Main Street",
        "city": "Los Angeles",
        "zipcode": 90001
    },
    "married": False
}

print("Type of json_dict:", type(json_dict))

with open("data.json", "w") as f:
    v = json.dumps(json_dict)
    print("v has value", v, "and is of type", type(v))
    f.write(v)

上面例子的輸出:

Type of json_dict: <class 'dict'>
v has value {"name": "Jason", "age": 21, "address": {"street": "1 Main Street", "city": "Los Angeles", "zipcode": 90001}, "married": false} and is of type <class 'str'>

data.json
{"name": "Jason", "age": 21, "address": {"street": "1 Main Street", "city": "Los Angeles", "zipcode": 90001}, "married": false}

請注意,data.json 文件未格式化。這是因為 json.dumps() 函數(shù)中省略了參數(shù)“indent”。

總結(jié)

本文通過5個示例,介紹了Python如何讀、寫操作JSON文件。

標(biāo)簽: Python  
相關(guān)文章
    x
    • 站長推薦
    /* 左側(cè)顯示文章內(nèi)容目錄 */