小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python 進階(九):JSON 基本操作

 文炳春秋 2020-03-13

1. 概述

JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,它具有簡潔、清晰的層次結構,易于閱讀和編寫,還可以有效的提升網(wǎng)絡傳輸效率。Python 標準庫的 json 模塊可以用來處理 JSON 格式數(shù)據(jù)的基本操作。

2. 使用

json 模塊主要提供了 dump、dumps、load、loads 方法對 JSON 數(shù)據(jù)進行編解碼。

2.1 dumps

json 模塊的 dumps 方法可以將 Python 對象轉(zhuǎn)為 JSON 格式字符串,以字典格式為例,看個示例:

import json

d = {'id':'001', 'name':'張三', 'age':'20'}
j = json.dumps(d, ensure_ascii=False)
print(j)

執(zhí)行結果:

{"id": "001", "name": "張三", "age": "20"}

我們發(fā)現(xiàn)上面的輸出結果并不是格式化的 JSON,dumps 方法還可以對數(shù)據(jù)進行格式化,如下所示:

import json

d = {'id':'001', 'name':'張三', 'age':'20'}
j = json.dumps(d, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))
print(j)

執(zhí)行結果:

{
    "age": "20",
    "id": "001",
    "name": "張三"
}

當然,除了字典類型外,其他一些 Python 類型也可轉(zhuǎn)成 JSON 格式的字符串,它們之間有對應關系如下所示:

Python JSON
dict object
list, tuple array
str string
iint, float, int 和 float 派生的枚舉 number
True true
False false
None null

再來看一下如何將 JSON 數(shù)據(jù)寫入文件:

import json

d = {'id':'001', 'name':'張三', 'age':'20'}
j = json.dumps(d, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))
with open('test.json', 'w', encoding='utf-8') as f:
    f.write(j)

2.2 dump

json 模塊的 dump 方法可以將 Python 對象序列化為 JSON 格式化流形式的文件類對象。

如果我們需要將數(shù)據(jù)寫到文件里的時候,dump 方法會比 dumps 方法方便一點,看一下示例:

import json

d = {'id':'001', 'name':'張三', 'age':'20'}
with open('test.json', 'w', encoding='utf-8') as f:
    json.dump(d, f, indent=4, ensure_ascii=False)

如果我們需要的數(shù)據(jù)格式為 JSON 格式字符串時,比如:將數(shù)據(jù)存入數(shù)據(jù)庫,這時則需要用 dumps 方法。

2.3 loads

json 模塊的 loads 方法可以將 JSON 格式數(shù)據(jù)轉(zhuǎn)為 Python 對象,看個示例:

import json

j = '{"id":"001", "name":"張三", "age":"20"}'
d = json.loads(j)
print(d)

執(zhí)行結果:

{'id': '001', 'name': '張三', 'age': '20'}

兩者之間轉(zhuǎn)換的對應關系如下所示:

JSON Python
object dict
array list
string str
number (int) int
number (real) float
true True
false False
null None

我們再來讀取一下之前生成的 test.json 中數(shù)據(jù)并將其轉(zhuǎn)為 Python 對象,如下所示:

import json

with open('test.json', encoding='utf-8') as f:
    data = f.read()
    print(json.loads(data))

執(zhí)行結果:

{'id': '001', 'name': '張三', 'age': '20'}

2.4 load

json 模塊的 load 方法將文件類對象轉(zhuǎn)為 Python 對象,看個示例:

import json

with open('test.json', encoding='utf-8') as f:
    print(json.load(f))

執(zhí)行結果:

{'id': '001', 'name': '張三', 'age': '20'}

我們可以看出 load 方法傳的參數(shù)是文件對象,而 loads 方法參數(shù)傳的是字符串。


    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多