字符串不替代_使用第三方库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字符串相关推荐
- java解析多层嵌套json字符串
java解析多层嵌套json字符串 java分别解析下面两个json字符串 package jansonDemo;import com.alibaba.fastjson.JSON; import co ...
- 讯飞实时语音转写 python3.6.1 可完美运行 解析返回的json字符串 输出所获语音文字
百度语音识别对录音要求较高(可能是我的问题,sdk和在线api都试过了(滑稽保命)),失败后选择讯飞语音,官方提供的文档是python2版本的 ,经过修改后可在python3中运行 ,解析返回的jso ...
- scala 字符串占位符_如何在Scala中将带有换行符的字符串转换为字符串列表?
scala 字符串占位符 A string is a sequence of characters and it can contain multiple lines, for this, the s ...
- python分析pcap文件_利用Python库Scapy解析pcap文件的方法
每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢? pip安装scapy,然后解析pcap: import scapy fro ...
- java给第三方接口发送数据_对接第三方接口--使用post请求发送json数据
对接第三方接口–使用post请求发送json数据 实习4个多月,终于转正!终于可以安心好好上班,好好学习!第一篇播客记录下工作中的中的小知识点. 本文记录的内容如下: 1.使用HttpClient相关 ...
- Jackson解析与生成Json字符串
Jackson API:http://tool.oschina.net/apidocs/apidoc?api=jackson-1.9.9 流式API读取和写入JSON内容离散事件. JsonParse ...
- c#中快速解析和提取json字符串
dynamic stuff1 = Newtonsoft.Json.JsonConvert.DeserializeObject("json字符串"); string Text = s ...
- 字符串不替代_【数据挖掘】MySQL中的字符串数据类型
首先我们需要知道,MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串类型. 01 数值类型 包含所有标准SQL支持的数值数据类型. 02 日期和时间类型 03 字符串类型 binary ...
- maven 加入第三方库_添加第三方库到Maven资源库
问题: 在安卓.java.Scala中,总是要添加一些第三方的库. 在"pom.xml"添加如下: com.loopj.android.http android-async-htt ...
最新文章
- 谈谈Spanner和F1
- 自定义编译gdal库
- 【数字信号处理】线性常系数差分方程 ( 卷积 与 “ 线性常系数差分方程 “ | 使用 matlab 求解 “ 线性常系数差分方程 “ )
- 基于SpringBoot+Vue前后端分离管理系统
- HTML: 字體設置
- mysql控制台增加一个用户_MySQL 纯命令行添加用户
- 部分博客中的代码已放到了GitHub上,欢迎大家下载阅读!
- python时间计算_日期天数差计算(Python)
- DIY_DE2开发板介绍
- joptionpane java_Java JOptionPane
- Adobe应用网络体验管理解决方案
- Disconnected from the target VM, address:xxxx 或者 Process finished with exit code 1 终极解决办法 idea
- github可以刷星吗_国内某知名社区居然也在GitHub上玩起了刷星活动
- mixin风格的bases class
- c语言算除法并转百分比,【转】C语言除法运算符“/”和求余运算符“%”
- linux 汇编 寻址,汇编语言间接寻址
- 1 0.99999的悖论_天文学科普:带你了解反物质、费米悖论和黑洞
- vue2 ElementUI 表单标签、表格表头添加问号图标提示
- elasticsearch的.security-7索引崩溃恢复笔记
- unix中嘚vim编辑器
热门文章
- python列表中enumerate和zip函数用法
- python :如何将list存入txt后,再读出list
- python 常用PEP8规范
- Python Selenium 常用方法总结
- AcWing算法基础课 Level-2 第二讲 数据结构
- AcWing算法提高课 Level-3 第二章 搜索
- java中将对象转为基本数据类型
- Security 登录认证流程详细分析 源码与图相结合
- SpringBoot整合Swagger 自动生成在线API文档 偷懒必备 同时也是我们的基本操作啦!!!
- php post请求后端拿不到值_php服务器能获取post请求的数值不能获取get请求的数值...