python3 json模組使用與字元編碼問題

2022-06-28 13:03:11 字數 3464 閱讀 6541

序列化:將物件的狀態資訊轉換為可以儲存或可以通過網路傳輸的過程,傳輸的格式可以是json,xml。

反序列化:就是從儲存區域(json,xml)讀取反序列化物件的狀態,重新建立該物件

python3 中可以使用 json 模組來對 json 資料進行編譯碼,它包含了兩個函式:

在json的編譯碼過程中,python 的原始型別與json型別會相互轉換,具體的轉化對照如下:

python

json

dict

object

list, tuple

array

str

string

int, float, int- & float-derived enums

number

true

true

false

false

none

null

json

python

object

dict

array

list

string

str

number (int)

int

number (real)

float

true

true

false

false

null

none

1、以下例項演示了 python 資料結構轉換為json:

1

'''2

author:ranxf

3'''45

import

json67

#python 字典型別轉換為json物件

8 data =

2425 json_str =json.dumps(data)

26print("

python 原始資料:

", repr(data))

27print("

json 物件:

", json_str)

執行結果:

python 原始資料:  

json 物件:

process finished with exit code 0

2、將乙個json編碼的字串轉回乙個python資料結構:

1

'''2

author:ranxf

3'''45

import

json67

#python 字典型別轉換為json物件

8 data =

2425 json_str = json.dumps(data)

26print("

python 原始資料:

", repr(data))

27print("

json 物件:

", json_str)

2829

#將json物件轉換為python字典

30 data2 =json.loads(json_str)

31print("

data2['neme']:

", data2['

name'])

32print("

data2['organizationname']:

", data2['

organizationname

'])

執行結果:

/usr/bin/python3.5 /media/ranxf/13ea76aa-89fc-4228-8e84-40e5707bc91b/python3_1000/1000/python3_server/python3_json/learn_json.py

python 原始資料:

json 物件:

data2['neme']: 測試人

data2['organizationname']: 測試組織

注意該python原始資料中有中文,在轉換為json物件後,輸出顯示為unicode編碼"organizationname": "\u6d4b\u8bd5\u7ec4\u7ec7","name": "\u6d4b\u8bd5\u4eba"

解決這個問題的辦法:

**

json_str =json.dumps(data)

變為:json_str = json.dumps(data, ensure_ascii=false)

3、如果需要處理的是檔案而不是字串,使用json.dump()json.load()來編碼和解碼json資料。例如:

'''

author:ranxf

'''import

json

data =

with open(

'data1.json

', 'w'

) as f:

json.dump(data, f, ensure_ascii=false)

#讀取資料

with open('

data.json

', 'r'

) as f:

data =json.load(f)

print(data)

寫入如果不加(, ensure_ascii=false

)資料執行結果:

加入**中json.dump(data, f, ensure_ascii=

false)下劃線部分,寫入data.json的資料為:

以上執行結果主要看中文字段區別即可(乙個是unicode顯示,乙個中utf8顯示)

參考:

Python3 json模組之編碼解碼方法講解

json j ascript object notation 是一種輕量級的資料交換格式,它基於ecmascript的乙個子集。json採用完全獨立於語言的文字格式,這些特性使json成為理想的資料交換格式,易於人閱讀和編寫,同時也易於機器解析和生成,在介面資料開發和傳輸中非常常用。python3中...

Python3 JSON 資料解析

python3 中可以使用 json 模組來對 json 資料進行編譯碼,它包含了兩個函式 json.dumps 對資料進行編碼。json.loads 對資料進行解碼。import json python 字典型別轉換為 json 物件 data json str json.dumps data p...

Python3 JSON 資料解析及案例

python3 中可以使用 json 模組來對 json 資料進行編譯碼,它包含了兩個函式 json.dumps 對資料進行編碼。json.loads 對資料進行解碼。python 編碼為 json 型別轉換對應表 json 解碼為 python 型別轉換對應表 json.dumps 與 json....