Python中的json操作

1.什麼是Json?
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,它是JavaScript的子集,易於人閱讀和編寫。

前端和後端進行數據交互,其實就是JS和Python進行數據交互

JSON注意事項:
(1)名稱必須用雙引號(即:””)來包括
(2)值可以是雙引號包括的字符串、數字、true、false、null、JavaScript數組,或子對象。

2.python數據類型與json數據類型的映射關係
Python

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

None    null
3. json中常用的方法
在使用json這個模塊前,首先要導入json庫:import json

方法    描述
json.dumps()    將 Python 對象編碼成 JSON 字符串
json.loads()    將已編碼的 JSON 字符串解碼爲 Python 對象
json.dump()    將Python內置類型序列化爲json對象後寫入文件
json.load()    讀取文件中json形式的字符串元素轉化爲Python類型
 舉例:

3-1   json.dumps()
import json
 
data = {'name':'nanbei','age':18}
#將Python對象編碼成json字符串
print(json.dumps(data))
結果:

{"name": "nanbei", "age": 18}
注: 在這裏我們可以看到,原先的單引號已經變成雙引號了

3-2 json.loads()
import json
 
data = {'name':'nanbei','age':18}
#將Python對象編碼成json字符串
#print(json.dumps(data))
#將json字符串編碼成Python對象
a = json.dumps(data)
print(json.loads(a))
 結果:

{'name': 'nanbei', 'age': 18}
在這裏舉個元組和列表的例子:

import json
 
data = (1,2,3,4)
data_json = [1,2,3,4]
#將Python對象編碼成json字符串
print(json.dumps(data))
print(json.dumps(data_json))
#將json字符串編碼成Python對象
a = json.dumps(data)
b = json.dumps(data_json)
print(json.loads(a))
print(json.loads(b))
 結果:

[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
可以看到,元組和列表解析出來的均是數組。

3-3 json.dump()
import json
 
data = {
    'nanbei':'haha',
    'a':[1,2,3,4],
    'b':(1,2,3)
}
with open('json_test.txt','w+') as f:
    json.dump(data,f)
查看結果:

3-4 json.load()
import json
 
data = {
    'nanbei':'haha',
    'a':[1,2,3,4],
    'b':(1,2,3)
}
with open('json_test.txt','w+') as f:
    json.dump(data,f)
 
with open('json_test.txt','r+') as f:
    print(json.load(f))
結果:

{'a': [1, 2, 3, 4], 'b': [1, 2, 3], 'nanbei': 'haha'}
4.參數詳解:
dump(obj,skipkeys=False, ensure_ascii=True, check_circular=True,
        allow_nan=True, cls=None, indent=None, separators=None,
        default=None, sort_keys=False, **kw):
#  函數作用:       將Python的對象轉變成JSON對象

#  skipkeys:       如果爲True的話,則只能是字典對象,否則會TypeError錯誤, 默認False

#  ensure_ascii:   確定是否爲ASCII編碼

#  check_circular: 循環類型檢查,如果爲True的話

#  allow_nan:      確定是否爲允許的值

#  indent:         會以美觀的方式來打印,呈現,實現縮進

#  separators:     對象分隔符,默認爲, 

#  encoding:       編碼方式,默認爲utf-8     

#  sort_keys:      如果是字典對象,選擇True的話,會按照鍵的ASCII碼來排序    

對於dump來說,只是多了一個fp參數

dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,
        allow_nan=True, cls=None, indent=None, separators=None,
        default=None, sort_keys=False, **kw)
Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
``.write()``-supporting file-like object).
簡單說就是dump需要一個類似文件指針的參數(並不是真正的指針,可以稱之爲文件對象),與文件操作相結合,即先將Python文件對象轉化爲json字符串再保存在文件中。。。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章