PYTHON3處理JSON的函數學習python的朋友必需要唆使的一門技巧的,咱們下面給各位整理了一些處理json函數供各位參考學習。html
在python3中import json模塊,而後使用dir(json)能夠看到json模塊提供的函數,下面選幾個經常使用的json處理函數看看用法:python
>>> import json
>>> dir(json)
['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__',
'__author__', '__builtins__', '__cached__', '__doc__', '__file__',
'__loader__', '__name__', '__package__', '__path__', '__spec__',
'__version__', '_default_decoder', '_default_encoder', 'decoder',
'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']web
json.dumpsjson
先定義一個列表,而後轉換看看輸出結果:數據結構
import json函數
data = [{"a":"aaa","b":"bbb","c":[1,2,3,(4,5,6)]},33,'tantengvip',True]
data2 = json.dumps(data)學習
print(data2)
輸出結果:ui
[{「c」: [1, 2, 3, [4, 5, 6]], 「a」: 「aaa」, 「b」: 「bbb」}, 33, 「tantengvip」, true]編碼
其實python的列表數據結構跟json數據結果很相似,轉換以後大致不變,只是True變成了true,元祖類型的(4,5,6)變成了[4,5,6].url
JSON PYTHON
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None
該表展示了python和json類型的轉換區別。
json.dump
這個方法用的相對較少,假如直接dump(json_data)會報錯,以下:
data = [{"a":"aaa","b":"bbb","c":[1,2,3,(4,5,6)]},33,'tantengvip',True]
data2 = json.dump(data)
#TypeError: dump() missing 1 required positional argument: 'fp'
報錯:TypeError: dump() missing 1 required positional argument: ‘fp’
json.dump和json.dumps很不一樣,json.dump主要用來json文件讀寫,和json.load函數配合使用。json.dump(x,f),x是對象,f是一個文件對象,這個方法能夠將json字符串寫入到文本文件中。
import json
data = [{"a":"aaa","b":"bbb","c":[1,2,3,(4,5,6)]},33,'tantengvip',True]
data2 = json.dumps(data)
print(data2)
f = open('./tt.txt','a')
json.dump(data2,f)
這樣就生成了一個tt.txt文件,保存了json格式的數據。dumps還提供pritty print,格式化的輸出。
json.load加載json格式文件
f = open('./tt.txt','r')
hehe = json.load(f)
print(hehe)
這樣就從txt文件中讀取了json數據。
json.lodas函數
那麼json.loads函數跟json.load有何區別?跟dumps和dump同樣,帶s是操做文件的。
hehe2 = json.loads('["aaa",{"name":"pony"}]')
print(hehe2)
loads能夠直接傳json格式數據做爲參數。
看一個讀取天氣的例子
import os, io, sys, re, time, base64, json
import webbrowser, urllib.request
def main():
"main function"
url = "http://m.weather.com.cn/data/101010100.html"
stdout=urllib.request.urlopen(url)
weatherInfo= stdout.read().decode('utf-8')
#print(weatherInfo)
jsonData = json.loads(weatherInfo)
#輸出JSON數據
szCity = jsonData["weatherinfo"]["city"]
print("城市: ", szCity)
szTemp = jsonData["weatherinfo"]["temp1"]
print("溫度: ", szTemp)
szWeather1 = jsonData["weatherinfo"]["weather1"]
print("天氣狀況: ",szWeather1)
szCityid = jsonData["weatherinfo"]["cityid"]
print("城市編碼: ",szCityid)
if __name__ == '__main__':
main()
轉載自--http://www.alliedjeep.com/95882.htm