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

首頁(yè) > 編程 > Python > 正文

python對(duì)json的相關(guān)操作實(shí)例詳解

2020-02-23 04:12:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例分析了python對(duì)json的相關(guān)操作。分享給大家供大家參考,具體如下:

什么是json:

JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。易于人閱讀和編寫(xiě)。同時(shí)也易于機(jī)器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個(gè)子集。JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。

JSON建構(gòu)于兩種結(jié)構(gòu):

“名稱/值”對(duì)的集合(A collection of name/value pairs)。不同的語(yǔ)言中,它被理解為對(duì)象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組 (associative array)。

值的有序列表(An ordered list of values)。在大部分語(yǔ)言中,它被理解為數(shù)組(array)。

這些都是常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)。事實(shí)上大部分現(xiàn)代計(jì)算機(jī)語(yǔ)言都以某種形式支持它們。這使得一種數(shù)據(jù)格式在同樣基于這些結(jié)構(gòu)的編程語(yǔ)言之間交換成為可能。

json官方說(shuō)明參見(jiàn):http://json.org/

Python操作json的標(biāo)準(zhǔn)api庫(kù)參考:http://docs.python.org/library/json.html

對(duì)簡(jiǎn)單數(shù)據(jù)類型的encoding 和 decoding:

使用簡(jiǎn)單的json.dumps方法對(duì)簡(jiǎn)單數(shù)據(jù)類型進(jìn)行編碼,例如:

import jsonobj = [[1,2,3],123,123.123,'abc',{'key1':(1,2,3),'key2':(4,5,6)}]encodedjson = json.dumps(obj)print repr(obj)print encodedjson

輸出:

[[1, 2, 3], 123, 123.123, 'abc', {'key2': (4, 5, 6), 'key1': (1, 2, 3)}][[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}]

通過(guò)輸出的結(jié)果可以看出,簡(jiǎn)單類型通過(guò)encode之后跟其原始的repr()輸出結(jié)果非常相似,但是有些數(shù)據(jù)類型進(jìn)行了改變,例如上例中的元組則轉(zhuǎn)換為了列表。在json的編碼過(guò)程中,會(huì)存在從python原始類型向json類型的轉(zhuǎn)化過(guò)程,具體的轉(zhuǎn)化對(duì)照如下:

json.dumps()方法返回了一個(gè)str對(duì)象encodedjson,我們接下來(lái)在對(duì)encodedjson進(jìn)行decode,得到原始數(shù)據(jù),需要使用的json.loads()函數(shù):

decodejson = json.loads(encodedjson)print type(decodejson)print decodejson[4]['key1']print decodejson

輸出:

<type 'list'>[1, 2, 3][[1, 2, 3], 123, 123.123, u'abc', {u'key2': [4, 5, 6], u'key1': [1, 2, 3]}]

loads方法返回了原始的對(duì)象,但是仍然發(fā)生了一些數(shù)據(jù)類型的轉(zhuǎn)化。比如,上例中‘a(chǎn)bc'轉(zhuǎn)化為了unicode類型。從json到python的類型轉(zhuǎn)化對(duì)照如下:

json.dumps方法提供了很多好用的參數(shù)可供選擇,比較常用的有sort_keys(對(duì)dict對(duì)象進(jìn)行排序,我們知道默認(rèn)dict是無(wú)序存放的),separators,indent等參數(shù)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 许昌县| 肇源县| 越西县| 天津市| 开封县| 门源| 辰溪县| 澜沧| 安西县| 汾西县| 富川| 贞丰县| 宾川县| 讷河市| 涞源县| 沭阳县| 中阳县| 区。| 莒南县| 桓仁| 大同县| 渭南市| 响水县| 宣汉县| 东宁县| 襄城县| 库尔勒市| 交城县| 兴国县| 邯郸县| 新晃| 邳州市| 北海市| 策勒县| 漯河市| 龙门县| 微山县| 安溪县| 台江县| 益阳市| 石楼县|