Python編碼,解碼和語法檢查JSON數據---demjson模塊

demjson模塊

  描述:demjson模塊用於編碼和解碼JSON格式的數據,以及檢查JSOn數據中是否存在錯誤或可移植性問題的方法。

場景說明:

  最近在做數據分析時,需要流量數據,於是抓取alexa的網站流量數據。但是通過數據處理得到後的數據是這樣的:

{cate: ["09\u670804\u65e5", "09\u670806\u65e5", "09\u670807\u65e5", "09\u670809\u65e5", "09\u670810\u65e5",
            "09\u670811\u65e5", "09\u670817\u65e5", "09\u670818\u65e5", "09\u670819\u65e5", "09\u670820\u65e5",
            "09\u670827\u65e5", "09\u670829\u65e5", "10\u670802\u65e5", "10\u670808\u65e5", "10\u670809\u65e5"],
     series: [{"name": "\u65e5UV",
               "data": [736000, 768000, 672000, 640000, 704000, 992000, 672000, 640000, 640000, 704000, 672000, 4160000,
                        768000, 736000, 832000]}, {"name": "\u65e5PV",
                                                   "data": [6771200, 6451200, 8736000, 3200000, 4224000, 7836800,
                                                            5040000, 5696000, 12160000, 5772800, 5107200, 22880000,
                                                            5606400, 4563200, 9152000]}],
     cate_tip: []
     }

  雖然得到的是類似於json格式的字符串,但是因爲在字符串中,key不帶引號所以不能使用json.loads()的方法進行解碼。

  下一步我想使用正則進行替換,將不帶雙引號的key加上雙引號。但是這樣會遇到各種麻煩(可以自己動手實踐一下)。於是在網上搜索到了這個模塊。

GitHub地址:

demjson
在這裏插入圖片描述
翻譯如下

demjson是一個Python語言模塊,用於編碼,解碼和語法檢查JSON數據。
它可以在Python 2和Python 3下使用。
它帶有一個jsonlint腳本,該腳本可用於驗證JSON文檔是否嚴格符合JSON規範,並檢測潛在的數據可移植性問題。
它還可以重新格式化或打印漂亮的JSON文檔;
通過重新縮進或刪除不必要的空格

下載安裝

pip install demjson

使用方法

假設一個字符串爲

example = '{a:[1,2,3], b:[4,5,6]}'

此時我們使用json進行解碼會報錯:

>>> import json
>>> example = '{a:[1,2,3], b:[4,5,6]}'
>>> json.loads(example)

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

這時我們使用demjson進行解碼:

>>> import demjson
>>> example = '{a:[1,2,3], b:[4,5,6]}'
>>> demjson.decode(example)
{'a': [1, 2, 3], 'b': [4, 5, 6]}

這樣我們就可以獲得字典形式的數據並取值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章