python json模塊使用詳情

 

python其餘知識目錄 html

 

#json。數據交換用到json文件。json是特殊的字符串。訪問網站,返回的就是jsonjava

一、json簡介:

定義:JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。
特色:簡潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提高網絡傳輸效率。python

在 JS 語言中,一切都是對象。所以,任何支持的類型均可以經過 JSON 來表示,例如字符串、數字、對象、數組等。可是對象和數組是比較特殊且經常使用的兩種類型:
  對象表示爲鍵值對
  數據由逗號分隔
  花括號保存對象
  方括號保存數組
序列化簡單定義:變成json格式。定義:變成json格式。
反序列化簡單定義: json格式變其它
json

二、注意點

注意點:
兩種語言之間數據類型的差別,用json交換。
外層必須是字典或列表這兩個容器類數據類型。
必須是雙引號(由於java等其它語言有使用雙引號表示字符串,單引號不表示字符串)
json是字符串
json中不存在元組。序列化元組以後元組變列表;不能是集合,序列化集合報錯。序列化支持類型能夠進Python官方文件介紹裏面有介紹。
之後傳值就是傳一個也要用字典或列表數組

import json
tup=(1,2,3)
a=json.dumps(tup)   #json中不存在元組。序列化元組以後元組變列表
print(a)
print(json.loads(a)) 
--------------結果:
[1, 2, 3]
[1, 2, 3]

import json
mset={1,2,3}      #不能是集合,序列化集合報錯。
print(json.dumps(mset))
-------------結果;
    o.__class__.__name__)
TypeError: Object of type 'set' is not JSON serializable

字典格式與json格式對比:
字典格式:網絡

d = {            
'a': 123,
'b': {
'x': ['A', 'B', 'C']
}
}

json格式post

{
"a": 123,
"b": {                #必須是雙引號(由於java等其它語言有使用雙引號表示字符串,單引號不表示字符串)
"x": ["A", "B", "C"]
}
} 

能夠看到, Dictionary和JSON很是接近, 而Python中的json庫提供的主要功能, 也是二者之間的轉換.網站

三、json使用(經常使用):

JSON(JavaScript Object Notation, JS 對象標記) 是一種輕量級的數據交換格式。JSON的數據格式其實就是python裏面的字典格式,裏面能夠包含方括號括起來的數組,也就是python裏面的列表。
在python中,有專門處理json格式的模塊—— json 和 picle模塊
  Json 模塊提供了四個方法: dumps、dump、loads、load
  pickle 模塊也提供了四個功能:dumps、dump、loads、load
序列化:將python的值轉換爲json格式的字符串。
反序列化:將json格式的字符串轉換成python的數據類型spa

1)# 序列化,將python的值轉換爲json格式的字符串。序列化json.dumps() True變true了。序列化 
import json
v = [12,3,4,{'k1':'v1'},True,'asdf']
v1 = json.dumps(v)
print(v1,type(v1))
--------------結果;
[12, 3, 4, {"k1": "v1"}, true, "asdf"] <class 'str'>    
    
2)反序列化json.load(),將json格式的字符串轉換成python的數據類型
import json
v2 = '["mcw",123]'
print(type(v2))
v3 = json.loads(v2)
print(v3,type(v3))
-----------------結果;
<class 'str'>
['mcw', 123] <class 'list

 

以下驗證:dumps能夠格式化大部分的基本數據類型爲字符串.net

1)字典序列化:
import json
dic={"name":"mcw","age":18}
xu=json.dumps(dic)
print(xu,type(xu),type(dic))
--------------結果:
{"name": "mcw", "age": 18} <class 'str'> <class 'dict'>  

)列表序列化與反序列化:
import json
li=[1,2]
xu=json.dumps(li)
print(xu,type(xu),type(li))
fx=json.loads(xu)
print(fx,type(fx))
------------結果:
[1, 2] <class 'str'> <class 'list'>
[1, 2] <class 'list'>

3)字符串序列化與反序列化:
import json
mcwstr="xiaoma"
xu=json.dumps(mcwstr)
print(xu,type(xu),type(mcwstr))
fx=json.loads(xu)
print(fx,type(fx))
---------------結果;
"xiaoma" <class 'str'> <class 'str'>
xiaoma <class 'str'>

4)整型序列化與反序列化
import json
mcwint=2
xu=json.dumps(mcwint)
print(xu,type(xu),type(mcwint))
fx=json.loads(xu)
print(fx,type(fx))
---------------結果:
2 <class 'str'> <class 'int'>
2 <class 'int'>

5)浮點型序列化與反序列化
import json
mcwfloat=2.03
xu=json.dumps(mcwfloat)
print(xu,type(xu),type(mcwfloat))
fx=json.loads(xu)
print(fx,type(fx))
--------------------結果:
2.03 <class 'str'> <class 'float'>
2.03 <class 'float'>

6)布爾型序列化與反序列化:
import json
mcwbool=True
xu=json.dumps(mcwbool)
print(xu,type(xu),type(mcwbool))
fx=json.loads(xu)
print(fx,type(fx))
------------------結果:
true <class 'str'> <class 'bool'>
True <class 'bool'>

7)None序列化與反序列化
import json
mcwnone=None
xu=json.dumps(mcwnone)
print(xu,type(xu),type(mcwnone))
fx=json.loads(xu)
print(fx,type(fx))
---------------結果;
null <class 'str'> <class 'NoneType'>
None <class 'NoneType'>

 四、json序列化過程當中的中文顯示

import json
v = {'k1':'alex','k2':'魔降風雲變'}
print(json.dumps(v))
val = json.dumps(v,ensure_ascii=False)
print(val)
--------------------結果:
{"k1": "alex", "k2": "\u9b54\u964d\u98ce\u4e91\u53d8"}
{"k1": "alex", "k2": "魔降風雲變"}

 五、json.dump 和json.load(不經常使用)

序列化:
import json v
= {'k1':'yh','k2':'小馬過河'} f = open('xiaoma.txt',mode='w',encoding='utf-8') #文件不存在就會生成 val = json.dump(v,f) print(val) f.close() ----------------結果: None #dump將內容序列化,並寫入打開的文件中。
反序列化:
import json f
= open('xiaoma.txt',mode='r',encoding='utf-8') data = json.load(f) f.close() print(data,type(data))
---------------結果:
{'k1': 'yh', 'k2': '小馬過河'} <class 'dict'>

 

 

參考:1)https://www.cnblogs.com/tjuyuan/p/6795860.html2)http://www.runoob.com/python/python-json.html3)https://www.jb51.net/article/139498.htm

相關文章
相關標籤/搜索