Python解析JSON【python第三方Demjson库】【将 Python对象编码成 JSON 字符串 || 将JSON字符串解码成Python对象】

  Demjson 是 python 的第三方模块库,可用于编码和解码 JSON 数据,包含了 JSONLint 的格式化及校验功能。

  demjson模块提供用于编码或解码用语言中性JSON格式表示的数据的类和函数(这在ajax Web应用程序中通常被用作XML的简单替代品)。此实现尽量尽可能遵从JSON规范(RFC 4627),同时仍然提供许多可选扩展,以允许较少限制的JavaScript语法。它包括完整的Unicode支持,包括UTF-32,BOM,和代理对处理。它还可以支持JavaScript的南方和无穷数字类型以及它的“未定义”类型。它还包括一个皮棉像JSON语法验证器测试对于严格遵守标准的JSON文本。

Github 地址:https://github.com/dmeranda/demjson

官方地址:http://deron.meranda.us/python/demjson/

为什么有时候Json库不能用?而是使用Demojson库?

python中json模块能解析的对象格式是有限的,查看下面这四种格式,唯独第四种可以用json.loads方法。

复制代码
# javascript中的对象,json.loads(js_json)会报错
js_json1 = "{x:1, y:2, z:3}"
 
# python打印出来的字典,json.loads(js_json1)会报错
py_json1 = "{'x':1, 'y':2, 'z':3}"
 
# key没有引号,只有values有引号
py_json3 = {0:"a",1:"b",2:"c",3:"d"}

# 唯独这种格式,json.loads(py_json2)不会报错,得到{'x': 1, 'y': 2, 'z': 3}
py_json2 = '{"x":1, "y":2, "z":3}'
复制代码

上面json模块无法解析的情况,demjson都能搞定:

复制代码
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}'

py_json3 = {0:"a",1:"b",2:"c",3:"d"}
 
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}

data = demjson.decode(py_json3)
print(data)
# {0: 'a', 1: 'b', 2: 'c', 3: 'd'}
复制代码

环境配置

①Windows

pip install Demjson

②Linux

$ tar -xvzf demjson-2.2.3.tar.gz
$ cd demjson-2.2.3
$ python setup.py install

Demjson库

函数描述
encode 将 Python 对象编码成 JSON 字符串
decode 将已编码的 JSON 字符串解码为 Python 对象

encode

 encode() 函数用于将 Python对象编码成JSON 字符串。

语法

demjson.encode(self, obj, nest_level=0)

实例

以下实例将数组编码为 JSON 格式数据:

复制代码
#!/usr/bin/python
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}]
复制代码

decode

 decode()  函数解码 JSON数据。该函数返回 Python对象。

语法

demjson.decode(self, txt)

实例

以下实例展示了Python 如何解码 JSON 对象:

复制代码
#!/usr/bin/python
import demjson

json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

text = demjson.decode(json)
print  text
以上代码执行结果为:

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
复制代码

 

posted @   习久性成  阅读(845)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示