日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字符串不替代_使用第三方库demjson解析不规范的json字符串

發布時間:2025/3/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串不替代_使用第三方库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字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。