如何使用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 <module>
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 鍐呮湁澶氫釜json
    绛旓細Python-->Json Json-->Python Json澶勭悊涓枃闂锛氬叧浜巔ython瀛楃涓茬殑澶勭悊闂锛屽鏋滄繁鍏ョ殑鐮旂┒涓嬪幓锛屾垜瑙夊緱鍙互鍐2绡囨枃绔犱簡锛堝疄闄呬笂鑷繁杩樻病鏁村緢鏄庣櫧锛夛紝鍦ㄨ繖閲屼富瑕佽繕鏄荤粨涓浣跨敤python2.7.11澶勭悊json鏁版嵁鐨勯棶棰樸傚墠鏈熷仛鎺ュ彛娴嬭瘯锛屽鐞嗘渶澶氱殑浜嬫儏灏辨槸锛屾妸鏁版嵁缁勮鎴愬悇绉嶅崗璁殑鎶ユ枃锛岀劧鍚庡彂閫佸嚭鍘汇傜劧鍚庡...
  • 濡備綍浣跨敤 Python 寰楀埌缃戦〉杩斿洖姝g‘鐨 Json 鏁版嵁
    绛旓細import jsonimport requestsdef demo(): url = 'http://api.demo.com' params = { ... } r = requests.get(url, params = params) doc = json.loads(r.text) print(doc锛 # 杩欓噷doc 灏卞凡缁忔槸杞崲涓python dict 鐨json鏁版嵁浜 ...
  • 鎬庝箞浣跨敤python鎻愬彇json鏂囦欢涓殑瀛楁
    绛旓細渚json鏂囦欢锛屽悕瀛梩est.json锛寋 "verson":"1.4.2" , "author":"johanna", "type":"1"} python缂栫爜:棣栧厛璇诲彇json鏂囦欢鍐呭锛鍒╃敤json.loads()杞寲涓篸ict绫诲瀷锛岄亶鍘嗘瘡涓瀵筴ey,val import jsonimport ostry:t_str = open('./test.json','r').read()t_json = json.loads(t_str)for k,v ...
  • json鏍囨敞鍥剧墖鏁版嵁闆濡備綍浣跨敤
    绛旓細1. 璇诲彇JSON鏂囦欢锛氶鍏堬紝鎴戜滑闇瑕浣跨敤閫傚綋鐨勭紪绋嬭瑷锛堝Python锛夎鍙朖SON鏂囦欢锛屽苟灏嗗叾鍔犺浇鍒板唴瀛樹腑銆侸SON鏂囦欢閫氬父鍖呭惈浜嗗浘鍍忚矾寰勩佹爣娉ㄦ鐨勪綅缃拰绫诲埆绛変俊鎭2. 鍔犺浇鍥惧儚鏁版嵁锛氭牴鎹甁SON鏂囦欢涓彁渚涚殑鍥惧儚璺緞锛屾垜浠彲浠ヤ粠纾佺洏涓婂姞杞界浉搴旂殑鍥惧儚鏁版嵁銆傝繖鍙互閫氳繃鍥惧儚澶勭悊搴擄紙濡侽penCV锛夋潵瀹炵幇銆3. 瑙f瀽鏍囨敞...
  • json鐨刲oad鍑芥暟鑳借鍙栫┖鐨
    绛旓細鍥犳锛屽綋鎴戜滑鍦浣跨敤Python鏉ヨВ鏋怞SON鏁版嵁鏃讹紝闇瑕佽冭檻鍒癑SON涓彲鑳藉寘鍚玭ull鍊肩殑鎯呭喌锛屽苟瀵瑰叾杩涜閫傚綋鐨勫鐞嗭紝浠ラ伩鍏嶅嚭鐜板紓甯告垨閿欒銆傛讳箣锛孞SON鐨刲oad鍑芥暟鑳藉璇诲彇绌虹殑锛岃繖鏄洜涓篔SON鏍煎紡鍏佽瀵硅薄涓殑鍊间负绌猴紝鍗硁ull銆傚湪浣跨敤load鍑芥暟鏃讹紝闇瑕佹敞鎰澶勭悊JSON涓殑null鍊硷紝浠ヤ繚璇佺▼搴忕殑姝g‘鎬у拰绋冲畾鎬с
  • 璇锋暀涓涓叧浜python澶勭悊json鐨勯棶棰
    绛旓細浣嗘槸锛屽幓鐢╦son瑙f瀽锛屼絾鏄嚭閿欙細Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32 Type "copyright", "credits" or "license()" for more information.>>> import json >>> json.loads(鈥榹"data":{{"tg_i":"1080723","contest_i":"1001"...
  • python鎬庝箞鎶json鏂囦欢杞崲鎴愬瓧绗︿覆
    绛旓細1銆佽鏄庯細json鏂囦欢鏈韩灏辨槸瀛楃涓叉枃浠讹紝浣跨敤open鍑芥暟灏卞彲浠ュ緱鍒版枃浠跺瓧绗︿覆鍐呭锛屽鏋滆瑙f瀽鏂囦欢鍒浣跨敤python3閫氳繃json妯″潡load鍑芥暟鏉ュ疄鐜般2銆佷唬鐮佺ず渚嬶細棣栧厛缂栧啓涓涓猨son鏂囦欢j.txt,鍐呭濡備笅锛歿"errno":1,"errmsg":"鎿嶄綔鎴愬姛锛","data":[]} python浠g爜濡備笅锛歩mport json 璇诲彇鏂囦欢鍐呭 whth open('j....
  • python鐨刯son.loads濡備綍澶勭悊甯TML鐨勫瓧绗︿覆?
    绛旓細json涓蹭腑鐨勫弻寮曞彿闇瑕佽浆涔変负銆怽"銆:str='''[{"level": 1,"value": ["aaa\"b\"ccc"]}]'''
  • PYTHON鍏充簬鎻愬彇杩斿洖JSON缁撴灉涓壒瀹氬瓧娈电殑闂
    绛旓細dump鍜宒umps锛堜粠Python鐢熸垚JSON锛夛紝load鍜宭oads锛堣В鏋怞SON鎴Python鐨鏁版嵁绫诲瀷锛塪ump鍜宒umps鐨勫敮涓鍖哄埆鏄 dump浼氱敓鎴愪竴涓被鏂囦欢瀵硅薄锛宒umps浼氱敓鎴愬瓧绗︿覆锛屽悓鐞唋oad鍜宭oads鍒嗗埆瑙f瀽绫绘枃浠跺璞″拰瀛楃涓叉牸寮忕殑JSON import json dic = { 'str': 'this is a string','list': [1, 2, 'a', 'b'],'sub...
  • scrapy鐖彇json鏁版嵁濡備綍杩涜?
    绛旓細鍦╜parse`鏂规硶涓紝棣栧厛灏嗗搷搴旂殑JSON鏁版嵁瑙f瀽涓Python瀵硅薄锛岀劧鍚庢牴鎹甁SON鏁版嵁鐨勭粨鏋勬彁鍙栧矖浣嶅悕绉板拰鎻忚堪锛屽苟浣跨敤`yield`杩斿洖鎻愬彇鍒扮殑鏁版嵁銆傝繍琛孲crapy鐖櫕锛歜ash scrapy crawl boss -o jobs.json涓婅堪鍛戒护灏嗚繍琛屽悕涓篳boss`Spider锛屽苟灏嗘彁鍙栧埌鐨勬暟鎹繚瀛樹负`jobs.json`鏂囦欢銆傛敞鎰忥細鍦ㄧ埇鍙朖SON鏁版嵁鏃讹紝纭繚鍝嶅簲鐨...
  • 扩展阅读:python培训班学费一般多少 ... python网站 ... python初学编程必背 ... python怎么打开使用 ... 学python后到底能干什么 ... js和python哪个难 ... python编程入门自学 ... 学了python再学c++好学吗 ... python nodejs ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网