json編碼解碼方法


JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,它基於ECMAScript的一個子集。 JSON采用完全獨立於語言的文本格式,這些特性使JSON成為理想的數據交換格式,易於人閱讀和編寫,同時也易於機器解析和生成,在接口數據開發和傳輸中非常常用。

Python3中我們利用內置模塊json解碼和編碼JSON對象。json模塊提供了四個功能:dumps、dump、loads、load

dumps 把數據類型轉換成字符串 

dump  把數據類型轉換成字符串並存儲在文件中

loads 把字符串轉換成數據類型  

load  把文件打開從字符串轉換成數據類型

dumps編碼

我們利用 dumps 將Python對象編碼為 JSON對象 ,當然 dumps 只完成了序列化為str,而 dump 必須傳文件描述符,將序列化的str保存到文件中。

編碼字典

import json 
odata = {'www': 1, 'python': 2, 'Python3': 3}
jdata = json.dumps(odata)
print(jdata)

編碼列表示例結果:

{"www": 1, "python": 2, "Python3": 3}
import json 
ldata = [100, 'Python2', {'www': 1, 'python': 2, 'Python3': 3}]
jdata = json.dumps(ldata)
print(jdata)

示例結果:

[100, "Python3", {"www": 1, "python": 2, "Python3": 3}]

  

編碼字符串

import json 
sdata = 'Python3'
jdata = json.dumps(sdata)
print(jdata)

示例結果:

"Python3"

格式化輸出JSON 

將下面的數組,轉化為標准的json格式

參數解析:

import json 
ldata = ['Python3', 100, {'www': 1, 'python': 2, 'Python3': 3}, True]
jdata = json.dumps(ldata, sort_keys=True, indent=4)
print(jdata)

 

示例結果:

[
    "Python3",
    100,
    {
        "Python3": 3,
        "python": 2,
        "www": 1
    },
    true
] 

sort_keys=True 那么字典的輸出會以鍵的順序排序

indent=4 表示縮進為4,如果 indent 是一個非負整數或者字符串,那么 JSON 數組元素和對象成員會被美化輸出為該值指定的縮進等級。

轉換關系對照表

下面為Python原始類型向JSON對象的轉化對照表:

 

Python
JSON
dict
object
list, tuple
array
str, unicode
string
int, long, float
number
True
true
False
false
None
null

 

loads解碼

我們利用 loads 用於解碼 JSON對象 。解碼結果即與之對應的 Python對象 類型。當然 loads 只完成了反序列化, load 只接收文件描述符,完成讀取文件和反序列化。

比如我們用來解碼上個示例的數據

import json 
jsondata = '''
[
    "Python3",
    100,
    {
        "Python3": 3,
        "python": 2,
        "www": 1
    },
    true
]
'''
ldata = json.loads(jsondata)
print(type(ldata))
print(ldata)

可以看到我們成功對上個例子中的JSON對象進行了解碼,並且最終的解碼結果為Python列表對象類型,符合Python對象JSON對象對照表的結果。

示例結果:

<class 'list'>
['Python3', 100, {'Python3': 3, 'python': 2, 'www': 1}, True] 

總結

Python3中的json解析和編碼模塊json使用起來非常簡單, 功能也非常齊全,完全能夠滿足我們日常的需求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM