python操作json(一)

來源:互聯網
上載者:User

標籤:元組   文法規則   編碼   smi   輸出   邏輯   縮排   except   資料   

Python 操作json

Json文法規則:
資料在成對的名稱和數值中
資料由逗號分隔
花括弧儲存對象
方括弧儲存數組
Json字串本質上是一個字串,用單引號表示

Json資料的書寫格式
名稱--值對,包括名稱欄位(在雙引號中),後面跟一個冒號,然後是值:
“name”: ”zhangsan” 等價於name = “zhangsan”
Json值
值可以是
數字(整數或浮點數)
字串(雙引號括起來)
邏輯值(true或false)
數組(在方括弧中)
對象(在花括弧中)
null
Json對象
Json的對象是在大括弧中的,
{“name”:”zhangsan”,”age”:20}
等價 name=”zhangsan” age = 20

Json數組
Json數組是在中括弧中的,數組可以包含多個對象
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
Employees是包含三個對象的數組

編碼Json.dumps()
將一個python對象編碼成json字串,

Python的列錶轉換成json數組

>> json.dumps([1,2,3,"a"])
‘[1, 2, 3, "a"]‘

Python的字串轉換成json字串

>> json.dumps("abc123")
‘"abc123"‘

Python元群組轉換成json數組

>> json.dumps((1,2,3,"a","b"))
‘[1, 2, 3, "a", "b"]‘

Python的字典轉換成json的對象

>> json.dumps({1:"a",2:"b",3:"c"})
‘{"1": "a", "2": "b", "3": "c"}‘#注意1、2、3被加上了雙引號,因為json的名稱是必須要加雙引號的

Python的數字(long型)轉換成json的數字

>> json.dumps(13L)
‘13‘

Python的數字(int)轉換成json的數字

>> json.dumps(13)
‘13‘

Python的unicode字串轉換成json的字串

>> json.dumps(u"abC")
‘"abC"‘

Python的True轉換成json的true

>> json.dumps(True)
‘true‘

Python的False轉換成json的false

>> json.dumps(False)
‘false‘

Python的None轉換成json的null

>> json.dumps(None)
‘null‘

>> type(json.dumps("abc"))#json本質上是一個字串
<type ‘str‘>

怎麼判斷一個json 是不是合法的?
用try except
try:
json.loads(‘"abc"‘)
except Exception,e:
print e
else:
print "ok"

json.dumps()函數參數應用
sort_keys
是否按key排序,sort_keys = True升序排序

#coding=utf-8
import json
data = [ { ‘a‘:‘A‘, ‘b‘:(2, 4), ‘c‘:3.0 }]
print json.dumps(data)
print json.dumps(data, sort_keys=True)

indent
設定參數縮排顯示的空格數。縮排顯示使讀起來更加清晰。
#coding=utf-8
import json
data = [{"a": "A", "b": [2, 4], "c": 3.0}]
print json.dumps(data, sort_keys=True, indent=3)

Separators
參數的作用是去掉逗號“,”和分號“:”後面的空格,從上面的輸出果都能看到“,”與“:”後面都有個空格,這都是為了美化輸出結果的作用,但是在我們傳輸資料的過程中,越精簡越好,冗餘的東西全部去掉,因此就可以加上separators參數對傳輸的json串進行壓縮。該參數是元組格式的
import json
data = [{"a": "A", "b": [2, 4], "c": 3.0}]
print len(json.dumps(data))
去掉編碼後的json串中,和:後面的空格
print len(json.dumps(data, separators=(‘,‘,‘:‘)))

skipkeys
在encoding過程中,dict對象的key只可以是基礎資料型別 (Elementary Data Type)(str,unicode,int,long,float,bool,None),如果是其他類型,那麼在編碼過程中就會拋出TypeError的異常。skipkeys可以跳過那些非string對象的key的處理,就是不處理
import json
data= [ { ‘a‘:‘A‘, ‘b‘:(2, 4), ‘c‘:3.0, (1,2):‘D tuple‘ } ]
print u"不設定skipkeys 參數"
try :
res1 = json.dumps(data) #skipkeys參數預設為False時
except Exception, e:
print e

print u"設定skipkeys 參數"
print json.dumps(data, skipkeys=True)

python操作json(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.