字符串不替代_使用第三方库demjson解析不规范的json字符串
Json在編程中是一種輕量級的文件格式,在本地開發或者web開發中使用較多。JSON(JavaScript Object Notation,JavaScript對象表示法,讀作/?d?e?s?n/)是一種由道格拉斯·克羅克福特構想和設計、輕量級的資料交換語言,該語言以易于讓人閱讀的文字為基礎,用來傳輸由屬性值或者序列性的值組成的數據對象。盡管JSON是JavaScript的一個子集,但JSON是獨立于語言的文本格式,并且采用了類似于C語言家族的一些習慣。
JSON 數據格式與語言無關。即便它源自JavaScript,但目前很多編程語言都支持 JSON 格式數據的生成和解析。JSON 的官方 MIME 類型是 application/json,文件擴展名是 .json。
在Python應用中,一般將列表或者字典等數據保存為json格式的字符串形式,以便后續使用。
一、demjson的簡介
python處理json是需要第三方json庫來支持,工作中遇到處理json數據,是沒有安裝第三方的json庫。demjson模塊提供用于編碼或解碼用的類和函數,以語言中立的JSON格式表示(在Ajax Web應用程序中,它通常用作XML的更簡單的替代品)。為了實現試圖盡可能符合JSON規范(RFC 4627),同時仍然提供許多可選擴展,以允許限制較少的JavaScript語法。它包括完整的Unicode支持,包括UTF-32、BOM和代理對處理。它還可以支持JavaScript的NaN和Infinity數字類型以及它的“未定義”類型。它還包括一個類似lint的JSON語法驗證器,該驗證器測試JSON文本是否嚴格遵守標準。
二、demjson的安裝
pip install demjson
三、demjson 的常用的兩個方法, 一個是 encode, 一個是 decode
1、encode
Python encode() 函數用于將 Python 對象編碼成 JSON 字符串。
語法
demjson.encode(self, obj, nest_level=0)
實例
以下實例將數組編碼為 JSON 格式數據:
import demjson data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] json = demjson.encode(data) print json以上代碼執行結果為:
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
2、decode
#!/usr/bin/python import demjson json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; text = demjson.decode(json) print text以上代碼執行結果為:
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
四、demjson解析不規范的json字符串
# -*- coding: utf-8 -*- import json # javascript中的對象 js_json = "{x:1, y:2, z:3}"# python打印出來的字典 py_json1 = "{'x':1, 'y':2, 'z':3}"# 解析不規則的json會報錯 json.loads(js_json) json.loads(py_json1)# ValueError: Expecting property name: line 1 column 2 (char 1)# 解析規則的json py_json2 = '{"x":1, "y":2, "z":3}' data = json.loads(py_json2) print(data)# {'y': 2, 'x': 1, 'z': 3}python的json模塊只能解析規則的json字符串,即字典的key要用雙引號, 沒有雙引號或者使用單引號都不能正常解析 雖然打印出來的字段帶有單引號,但json中不使用單引號
# -*- coding: utf-8 -*- import demjson js_json = "{x:1, y:2, z:3}" py_json1 = "{'x':1, 'y':2, 'z':3}" py_json2 = '{"x":1, "y":2, "z":3}' data = demjson.decode(js_json) print(data)# {'y': 2, 'x': 1, 'z': 3}data = demjson.decode(py_json1) print(data)# {'y': 2, 'x': 1, 'z': 3}data = demjson.decode(py_json2) print(data)# {'y': 2, 'x': 1, 'z': 3}總結
以上是生活随笔為你收集整理的字符串不替代_使用第三方库demjson解析不规范的json字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ansys怎么批量输入点坐标_当Spac
- 下一篇: 过渡效果_12个酷炫创意的动画过渡效果A