国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python3中的json模塊使用詳解

2020-02-23 00:01:18
字體:
來源:轉載
供稿:網友

1. 概述

JSON (JavaScript Object Notation)是一種使用廣泛的輕量數據格式. Python標準庫中的json模塊提供了JSON數據的處理功能.

Python中一種非常常用的基本數據結構就是字典(Dictionary). 它的典型結構如下:

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

而JSON的結構如下:

{"a": 123,"b": {"x": ["A", "B", "C"]}} 

可以看到, Dictionary和JSON非常接近, 而Python中的json庫提供的主要功能, 也是兩者之間的轉換.

2. 讀取JSON

json.loads方法可以將包含了一個JSON數據的str, bytes或者bytearray對象, 轉化為一個Python Dictionary. 它的完型接口簽名如下:

代碼如下:json.loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

2.1 最簡單的例子

json.loads最基本的使用方式就是將一個包含JSON數據的str傳遞給這個方法:

>>> json.loads('{"a": 123}'){'a': 123} 

注意

在Python中, str值可以放在一對單引號中, 也可以放在一對雙引號中:

>>> 'ABC' == "ABC"True 

所以, 在定義Dictionary的str類型的鍵和值的時候, 使用單引號或者雙引號都是合法和等價的:

>>> {"a": 'ABC'} == {'a': "ABC"}True 

但是, 在JSON中, 字符串數據只能放在雙引號中, 因而json.loads方法處理的字符串的JSON內容中, 字符串必須使用雙引號. 否則就會發生解碼錯誤:

>>> json.loads("{'a': 123}")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

如果被處理的Python字符串是包含在雙引號中的, 那么JSON中的雙引號就需要轉義:

>>> json.loads("{/"a/": 123}"){'a': 123} 

2.2 bytes和bytearray數據

對于內容是JSON數據的bytes和bytearray, json.loads方法也可以處理:

>>> json.loads('{"a": 123}'.encode('UTF-8')){'a': 123}>>> json.loads(bytearray('{"a": 123}', 'UTF-8')){'a': 123}             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永平县| 铜川市| 元谋县| 大关县| 平谷区| 鸡东县| 德阳市| 南康市| 集安市| 沂源县| 梁平县| 德昌县| 宣化县| 隆安县| 奇台县| 浏阳市| 双流县| 鸡泽县| 南华县| 普兰店市| 杂多县| 丹江口市| 台江县| 五大连池市| 共和县| 巴林左旗| 礼泉县| 嘉峪关市| 伊川县| 正阳县| 虞城县| 渭南市| 望谟县| 舟山市| 同江市| 武鸣县| 巫溪县| 钟祥市| 嘉祥县| 武宣县| 西林县|