Python中Json使用示例詳解

    目錄

    Python Json使用

    本篇主要介紹一下 python 中 json得使用 如何把 dict轉(zhuǎn)成json 、object 轉(zhuǎn)成json 、以及json轉(zhuǎn)成對(duì)象 等等。。

    json是非常常用得一種數(shù)據(jù)格式,比如在前后端分離得 web開發(fā)中,返回給前端 通常都會(huì)使用json ,那么來看看 python 中如何玩轉(zhuǎn)json

    1.dict 轉(zhuǎn)成 json (json.dumps(dict))

    注意: ensure_ascii=False 否則中文亂碼

    import json student = {     'name': 'johnny',     'age': 27,     'address': '無錫' } print(json.dumps(student, ensure_ascii=False))# {"name": "johnny", "age": 27, "address": "無錫"}  json

    2.json 轉(zhuǎn) dict (json.loads(jsonstr))

    import jsonjson_student = '{"name": "johnny", "age": 27, "address": "無錫"}'print(json.loads(json_student))# {'name': 'johnny', 'age': 27, 'address': '無錫'} 字典dict

    3. 類對(duì)象轉(zhuǎn) json (dict屬性/提供default=方法)

    3.1 錯(cuò)誤使用

    注意:json.dumps() 不支持 直接把 類對(duì)象放進(jìn)去!!! 會(huì)報(bào)錯(cuò) Student is not JSON serializable

    import jsonclass Student:    def __init__(self, name, age):        self.name = name        self.age = agestudent = Student('candy', '30')#錯(cuò)誤使用!!!print(json.dumps(student))  報(bào)錯(cuò)!!! TypeError: Object of type Student is not JSON serializable

    3.2 使用類對(duì)象 dict 屬性

    #正確使用!!!print(json.dumps(student.__dict__))) #可以使用 類對(duì)象得 __dict__ 屬性#{"name": "candy", "age": "30"}

    3.3 提供一個(gè) convert2json 方法

    default=指定方法

    class Student:    def __init__(self, name, age):        self.name = name        self.age = age    @staticmethod    def conver2json(self):        return {            'name': self.name,            'age': self.age        }#通過自己寫一個(gè) conver2json方法 去手動(dòng)轉(zhuǎn)化一下 把 類對(duì)象轉(zhuǎn)成json print(json.dumps(student,default=Student.conver2json))

    4.json 轉(zhuǎn) 類對(duì)象 (json.loads(jsonstr,object_hook=..))

    注意:json.loads 默認(rèn)只會(huì)轉(zhuǎn)成dict,需要自己提供方法 把dict 轉(zhuǎn)成 類對(duì)象

    import jsonclass Student:    def __init__(self, name, age):        self.name = name        self.age = age    @staticmethod    def conver2json(self):        return {            'name': self.name,            'age': self.age        }    @staticmethod    def convert2object(dict):        return Student(dict['name'],dict['age'])json_student = '{"name": "johnny", "age": 27, "address": "無錫"}'print(json.loads(json_student,object_hook=Student.convert2object))#<__main__.Student

    5. dict/對(duì)象 轉(zhuǎn)為 json文件 (json.dump(student,f))

    注意 dump 還是 只能接收 dict ,如果要把 對(duì)象寫到j(luò)son中 需要先把對(duì)象 轉(zhuǎn)成 dict ,可以通過 ——dict——屬性

    student = {    'name': 'johnny',    'age': 27,    'address': '無錫'}with open('student.json','w') as f:    json.dump(student,f,ensure_ascii=False)

    6. json文件轉(zhuǎn) dict /對(duì)象 (json.load)

    with open('student.json','r')  as f:    print(json.load(f))

    小疑問

    為什么:轉(zhuǎn)成json 后 name 是一個(gè)數(shù)組呢? 因?yàn)?self.name = name, 后面有一個(gè) 逗號(hào),。。。 會(huì)把這個(gè)name當(dāng)成元組 ,元組轉(zhuǎn)成 json 就是 數(shù)組!!!

    class Student:    def __init__(self, name, age):        self.name = name,  #這里!!!不能有 逗號(hào)。。         self.age = agestudent = Student('candy', '30')print(json.dumps(student.__dict__))#猜猜它得打印是什么 #{"name": ["candy"], "age": "30"}   

    總結(jié)

    • json.dumps() 只支持 dict轉(zhuǎn)json 如果是 class 對(duì)象 需要 通過 dict屬性或者提供default= conver2json 方法
    • json.dump() 是寫入 文件中
    • json.loads() 只支持把 json str轉(zhuǎn)成 dict ,如果要轉(zhuǎn)成 class 對(duì)象 則需要提供 object_hook=convert2object方法
    • json.load()/ 是從文件中讀取 jsonstr 到 dict

    很簡單 注意一下 class 和 json 得相互轉(zhuǎn)化即可

    參考:https://www.jb51.net/article/256548.htm

    到此這篇關(guān)于Python中Json使用詳解得內(nèi)容就介紹到這了,更多相關(guān)Python Json使用內(nèi)容請(qǐng)搜索之家以前得內(nèi)容或繼續(xù)瀏覽下面得相關(guān)內(nèi)容希望大家以后多多支持之家!

    聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評(píng)論
    更多 網(wǎng)友評(píng)論1 條評(píng)論)
    暫無評(píng)論

    返回頂部

    主站蜘蛛池模板: 少妇人妻精品一区二区三区| 麻豆一区二区三区蜜桃免费| 一区二区三区免费视频播放器 | 成人免费av一区二区三区| 污污内射在线观看一区二区少妇 | 无码人妻一区二区三区免费n鬼沢| 精品一区二区三区视频 | 国产精品久久一区二区三区| 变态拳头交视频一区二区 | 日韩人妻无码一区二区三区久久99 | 在线视频一区二区三区三区不卡| 精品无码成人片一区二区| 国产成人无码aa精品一区| 午夜性色一区二区三区不卡视频| 日韩十八禁一区二区久久| 蜜芽亚洲av无码一区二区三区| 亚洲AV无码一区二区三区鸳鸯影院 | 国产福利一区二区三区在线观看 | 中日韩一区二区三区| 国产免费一区二区三区不卡| 国精产品一区一区三区| 色国产精品一区在线观看| 精品国产亚洲第一区二区三区| 国产免费一区二区三区免费视频 | 一区二区三区午夜视频| 日韩一区二区在线播放| 日韩精品一区二区三区不卡| 亚洲av日韩综合一区在线观看| 日韩最新视频一区二区三| 精品一区二区三区无码免费直播| 不卡一区二区在线| 中文字幕在线不卡一区二区| 日韩少妇无码一区二区三区| 亚洲AV无码一区二区三区在线| 风流老熟女一区二区三区| 精品人妻码一区二区三区| 精品成人一区二区三区四区| 国内精品一区二区三区最新| 无码精品一区二区三区免费视频| 久久国产精品免费一区| 国产在线视频一区二区三区|