python操作json_如何使用Python处理JSON数据
如何使用Python處理JSON數據?本篇文章就給大家介紹使用Python處理JSON數據的基本方法。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。
在介紹使用Python處理JSON數據的基本方法之前,我們首先要了解一下什么是JSON?
JSON代表“JavaScript Object Notation”,可以說是“基于JavaScript語言符號的數據格式”。但是,該表示法僅基于JavaScript,可用于其他各種語言。
JSON是我們存儲和交換數據的一種方式,它通過其語法實現,并在許多Web應用程序中使用。JSON的優點在于它具有人類可讀的格式,這可能是在數據傳輸中使用它的原因之一,此外還有使用API時的有效性。
在JSON中,數據以名稱/值(name/value)對表示;大括號內存儲對象,每個名稱后跟':'(冒號),名稱/值對之間要用(逗號)分隔;方括號包含數組,值以(逗號)分隔。
JSON格式數據的示例:{
"book1":{
"title": "Python Beginners",
"year": 2005 ,
"page": 399
},
"book2":{
"title": "Python Developers",
"year": 2006 ,
"page": 650
}
}
下面我們來詳細了解一下在Python中如何處理JSON數據。
Python使得處理JSON數據變得簡單。實現此目的的模塊是json模塊。該模塊應該包含在Python(內置)安裝中,因此你不需要像使用PDF和Excel文件那樣安裝任何外部模塊。要使用此模塊,你唯一需要的是導入它(開頭寫入):import json
但是,JSON庫是做什么的呢?此庫主要從文件或字符串解析JSON。它還將JSON解析為Python中的字典或列表,反之亦然,即將Python字典或列表轉換為JSON字符串。
讀取JSON(JSON轉Python)
讀JSON意味著將JSON轉換為Python值(對象)。如上所述,json庫將JSON解析為Python中的字典或列表。為此,我們使用loads()函數(從字符串加載),如下所示:import json
jsonData = '{"name": "Frank", "age": 39}'
jsonToPython = json.loads(jsonData)
如果要查看輸出,請執行 print jsonToPython,在這種情況下,你將獲得以下輸出:{'age': 39, 'name': 'Frank'}
也就是說,數據作為Python字典(JSON對象數據結構)返回。
Python轉JSON
上一節我們介紹了JSON轉Python,這一節我們將向你展示如何將Python值轉換(編碼)為JSON。
假設我們在Python中有以下字典:import json
pythonDictionary = {'name':'Bob', 'age':44, 'isEmployed':True}
dictionaryToJson = json.dumps(pythonDictionary)
如果我們運行 print dictionaryToJson,我們得到以下JSON數據:{"age": 44, "isEmployed": true, "name": "Bob"}
因此,此輸出被視為對象(Dictionary)的數據表示。該方法dumps()是此類操作的關鍵。
此時需要注意的是,JSON不能存儲所有類型的Python對象,只能存儲以下類型:列表; 字典; 布爾值; 數; 字符串; 沒有。因此,需要轉換任何其他類型以便存儲在JSON中。
假設我們有以下課程:class Employee(object):
def __init__(self, name):
self.name = name
假設我們創建了一個新對象abder,如下所示:abder = Employee('Abder')
如果我們想將此對象轉換為JSON,該怎么辦?那是json.dumps(abder)?在這種情況下,你將收到類似于以下內容的錯誤:Traceback (most recent call last):
File "test.py", line 8, in
abderJson = json.dumps(abder)
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 243, in dumps
return _default_encoder.encode(obj)
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <__main__.Employee object at 0x10e74b750> is not JSON serializable
但是,有解決方法嗎?幸運的是有。要解決此問題,我們可以定義類似于以下的方法:def jsonDefault(object):
return object.__dict__
然后將對象編碼為JSON,如下所示:jsonAbder = json.dumps(abder, default=jsonDefault)
如果你運行 print jsonAbder,你應該得到以下輸出:{"name": "Abder"}
我們現在已經將Python對象(abder)編碼為JSON。
以上就是如何使用Python處理JSON數據的詳細內容,更多請關注php中文網其它相關文章!
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的python操作json_如何使用Python处理JSON数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflow官方文档_Tenso
- 下一篇: python自动点击脚本_[Python