1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        JSON如何快速轉(zhuǎn)成對(duì)象?

        共 1514字,需瀏覽 4分鐘

         ·

        2023-10-05 23:13

        這是「進(jìn)擊的Coder」的第 872  篇技術(shù)分享 作者:kingname 來(lái)源:未聞Code

        閱讀本文大概需要 3 分鐘。



        我們知道,在 Python 里面,要把 JSON 轉(zhuǎn)成字典是非常容易的,只需要使用json.loads(JSON字符串)就可以了。

        但如果這個(gè) JSON 轉(zhuǎn)成的字典,嵌套比較深,那么要讀取里面的數(shù)據(jù)就非常麻煩了。如下圖所示:

        3f2adc0f844162ae2ec0beb771bc480a.webp

        如果我要讀取把圖中的end減去start字段,那么用字典的時(shí)候,代碼要寫(xiě)成這樣:

              result = info['data'][0]['entities']['annotations'][0]['end'] - info['data'][0]['entities']['annotations'][0]['start']

        光是看到這些方括號(hào)和單引號(hào),就夠讓人頭暈了。

        但如果改成下面這樣,看起來(lái)就清爽多了:

              result = info.data[0].entities.annotations[0].end - info.data[0].entities.annotations[0].start

        那么如何快速把一個(gè)嵌套很深的字典轉(zhuǎn)換為對(duì)象呢?其實(shí)非常簡(jiǎn)單,使用 Python 自帶的SimpleNamespace就可以了。

        使用SimpleNamespace可以快速創(chuàng)建一個(gè)空對(duì)象,并設(shè)置它的屬性,用法如下:

              from types import SimpleNamespace

        ins = SimpleNamespace(aa=1, bb=2, cc=3)

        print(ins.bb)

        運(yùn)行效果如下圖所示:

        34b9fbd00b40787c4b06f32e5c63db27.webp

        基于字典創(chuàng)建也非常簡(jiǎn)單:

              from types import SimpleNamespace


        data = {'aa'1'bb'2'cc'3}
        ins = SimpleNamespace(**data)

        print(ins.bb)

        53e3a32fb08842724746bf6bcdc30888.webp對(duì)于深層嵌套的 JSON 字符串,我們?cè)谑褂?code style="font-size:14px;color:rgb(30,107,184);background-color:rgba(27,31,35,.05);font-family:'Operator Mono', Consolas, Monaco, Menlo, monospace;">json.loads時(shí),額外設(shè)置一個(gè)參數(shù):object_hook,就可以實(shí)現(xiàn)遞歸式轉(zhuǎn)換內(nèi)層字典:

              x = json.loads(JSON字符串, object_hook=lambda d: SimpleNamespace(**d))

        如下圖所示:

        6b878b3b11f06c888fd62b811f518c03.webp

        關(guān)于參數(shù)object_hook的具體用法,大家可以看官方文檔[1]

        參考資料

        [1]

        官方文檔: https://docs.python.org/3/library/json.html#json.loads

        c16d69c84184685896fe493d76ede421.webp

        End

        歡迎大家加入【ChatGPT&AI 變現(xiàn)圈】,零門(mén)檻掌握 AI 神器!我們帶你從小白到高手,解鎖智能問(wèn)答、自動(dòng)化創(chuàng)作、技術(shù)變現(xiàn)的無(wú)限可能。與我們共同成長(zhǎng),開(kāi)啟 AI 新征程!立即行動(dòng),未來(lái)已來(lái)?。ㄔ斍檎?qǐng)戳:知識(shí)星球:ChatGPT&AI 變現(xiàn)圈,正式上線!

        掃碼加入:



        好文和朋友一起看~
        瀏覽 65
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            大香蕉色视频 | 日韩A片在线 | 日本欧美性爱 | 欧美激情成人在线 | 婷婷五月激情网 | 欧美福利视频 | 五月天黄色激情网站 | 国产亚洲欧美一区二区无码优播 | 亚洲天堂2015 | 娇妻4p被三个男人伺候电影 |