python 處理json

python參考:http://docs.python.org/library/json.html
JSON:一種輕量級數據交換格式,相對于XML而言更簡單筷登,也易于閱讀和編寫,機器也方便解析和生成哩盲,Json是JavaScript中的一個子集前方。
python 2.6開始加入了json的模塊,python對json的處理分別是編碼和解碼
encoding:把一個Python對象編碼轉換成Json字符串-->json.dumps
decoding:把Json格式字符串解碼轉換成Python對象-->json.loads

對數據類型(string廉油、int惠险、float、list抒线、tuple班巩、dict),python可以直接處理

import json
dict =(['A', {'B': ('C', None, 1.0, 2)}])
print(json.dumps(dict))

輸出:

["A", {"B": ["C", null, 1.0, 2]}]

json.dumps:

python json
dict object
llist嘶炭、tuple array
string string
int抱慌、number、float number
True ture
None null
json.dump(obj,fp,,skipkeys=False,ensure_ascii=True,check_circular=True,allow_nan=True,cls=None,indent=None,separators=None,default=None,sort_keys=False,*kw)
python json
skipkeys 默認是false,編碼中key如果不是基本類型(str眨猎、int抑进、float、bool睡陪、None)寺渗,軟件會報錯,如果是true宝穗,則忽略key的顯示
ensure_ascii 表示編碼使用的字符集户秤,默認是是True,表示使用ascii碼進行編碼逮矛。如果設置為False鸡号,就會以Unicode進行編碼
check_circular 默認是true,檢查類型是否存在循環(huán)引用须鼎,如果存在這類型的引用鲸伴,則被省略
allow_nan 序列化的時候超過float值的范圍府蔗,那么將用(,Infinity,NAN)代替
indent 設置參數縮進顯示的空格數」埃縮進顯示使讀起來更加清晰
separators 參數的作用是去掉逗號“,”和分號“:”后面的空格姓赤,從上面的輸出 結果都能看到“,”與“:”后面都有個空格
sort_keys 默認是fasle,不按照key的assic碼排序
dict =[1,2,3,{'中國': 1.000000122221111111111111111111111111111111111111111000000008, '6': 7}],
print(json.dumps(dict))
print(json.dumps(dict,separators=(',',':'),ensure_ascii = False,indent=1))

輸入如下

[[1, 2, 3, {"\u4e2d\u56fd": 1.000000122221111, "6": 7}]]
[
 [
  1,
  2,
  3,
  {
   "中國":1.000000122221111,
   "6":7
  }
 ]
]
python對類對象序列化json
class person():
    def __init__(self,__name,__age):
        self.__name =__name
        self.__age = __age
    def getName(self):
        return self.__name
    def setName(self,__value):
        self.__name = __value
    def delName(self):
        del self.__name
    name =property(getName,setName,delName)
    def getAge(self):
        return self.__age
    def setAge(self,__value):
        self.__age = __value
    age = property(setAge,getAge)
limei = person('limei',24)     
print(json.dumps(limei))# 報錯

把person的類轉化為json仲吏,如果使用json.dumps(limei),python會解析出錯不铆。原因是Object of type 'person' is not JSON serializable,所以需要dumps()實現default.這個參數接受一個函數裹唆,這個函數可以將對象轉換為字典誓斥。

def obj_json( obj_instance):
     return { 'name': obj_instance.name, 'age': obj_instance.age}
print(json.dumps(limei,default=obj_json))

輸出如下

{"name": "limei", "age": 24}

上面的方法如果對于多參數的類來說,這個方法確實很麻煩许帐。python中對象實例有個方法可以簡化這一過程劳坑。直接調用實例的dict

print(limei.__dict__)
輸出如下
{'_person__name': 'limei', '_person__age': 24}

所以可以重寫一下obj_json:

def obj_json( obj_instance):
  return obj_instance.__dict__

上面的代碼也可以使用lambda的方法編寫。

class person():
    def __init__(self,__name,__age):
        self.__name =__name
        self.__age = __age
    def getName(self):
        return self.__name
    def setName(self,__value):
        self.__name = __value
    def delName(self):
        del self.__name
    name =property(getName,setName,delName)
    def getAge(self):
        return self.__age
    def setAge(self,__value):
        self.__age = __value
    age = property(getAge,setAge)
limei = person('limei',24)
print(json.dumps(limei,default=lambda person:person.__dict__))

私有的方法:

def converageObject(clz):
    dict = {}
    for key in clz.__dict__.keys():
        temp_key = key.split("_")[-1]
        dict[temp_key]=clz.__dict__.get(key)
    return dict
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末成畦,一起剝皮案震驚了整個濱河市距芬,隨后出現的幾起案子,更是在濱河造成了極大的恐慌循帐,老刑警劉巖框仔,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異惧浴,居然都是意外死亡存和,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門衷旅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捐腿,“玉大人,你說我怎么就攤上這事柿顶∏研洌” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵嘁锯,是天一觀的道長宪祥。 經常有香客問我,道長家乘,這世上最難降的妖魔是什么蝗羊? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮仁锯,結果婚禮上耀找,老公的妹妹穿的比我還像新娘。我一直安慰自己业崖,他們只是感情好野芒,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布蓄愁。 她就那樣靜靜地躺著,像睡著了一般狞悲。 火紅的嫁衣襯著肌膚如雪撮抓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天摇锋,我揣著相機與錄音丹拯,去河邊找鬼。 笑死乱投,一個胖子當著我的面吹牛咽笼,可吹牛的內容都是我干的顷编。 我是一名探鬼主播戚炫,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼媳纬!你這毒婦竟也來了双肤?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钮惠,失蹤者是張志新(化名)和其女友劉穎茅糜,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體素挽,經...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡蔑赘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了预明。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缩赛。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖撰糠,靈堂內的尸體忽然破棺而出酥馍,到底是詐尸還是另有隱情,我是刑警寧澤阅酪,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布旨袒,位于F島的核電站,受9級特大地震影響术辐,放射性物質發(fā)生泄漏砚尽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一辉词、第九天 我趴在偏房一處隱蔽的房頂上張望必孤。 院中可真熱鬧,春花似錦较屿、人聲如沸隧魄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽购啄。三九已至襟企,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間狮含,已是汗流浹背顽悼。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留几迄,地道東北人蔚龙。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像映胁,于是被迫代替她去往敵國和親木羹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內容

  • 一直是O'Reilly圖書的粉絲解孙。想要學習json坑填。O'Reilly系列的json必知必會就非常好。這本書很照顧初...
    凌絕少爺閱讀 763評論 0 0
  • 一 什么是jsonjson是一種輕量級的數據交換格式弛姜。它基于 [ECMAScript]((w3c制定的js規(guī)范)的...
    寧靜消失何如閱讀 10,719評論 0 3
  • 基礎1.r''表示''內部的字符串默認不轉義2.'''...'''表示多行內容3. 布爾值:True脐瑰、False(...
    neo已經被使用閱讀 1,689評論 0 5
  • 20170914,周四。 昨天專程開車到學校去看看孩子廷臼。上周末孩子因為看書耽誤了寫作業(yè)苍在,我以孩子...
    記得祝福閱讀 202評論 14 5
  • 團圓、圓滿似乎很難圓荠商,母親的固執(zhí)寂恬、無知、糊涂结啼,另一半的不解風情掠剑,這輩子的遺憾,拋開所有郊愧,放開胸懷任由發(fā)展朴译?
    呀___土豆閱讀 196評論 0 0