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字符串相关推荐

  1. java解析多层嵌套json字符串

    java解析多层嵌套json字符串 java分别解析下面两个json字符串 package jansonDemo;import com.alibaba.fastjson.JSON; import co ...

  2. 讯飞实时语音转写 python3.6.1 可完美运行 解析返回的json字符串 输出所获语音文字

    百度语音识别对录音要求较高(可能是我的问题,sdk和在线api都试过了(滑稽保命)),失败后选择讯飞语音,官方提供的文档是python2版本的 ,经过修改后可在python3中运行 ,解析返回的jso ...

  3. scala 字符串占位符_如何在Scala中将带有换行符的字符串转换为字符串列表?

    scala 字符串占位符 A string is a sequence of characters and it can contain multiple lines, for this, the s ...

  4. python分析pcap文件_利用Python库Scapy解析pcap文件的方法

    每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢? pip安装scapy,然后解析pcap: import scapy fro ...

  5. java给第三方接口发送数据_对接第三方接口--使用post请求发送json数据

    对接第三方接口–使用post请求发送json数据 实习4个多月,终于转正!终于可以安心好好上班,好好学习!第一篇播客记录下工作中的中的小知识点. 本文记录的内容如下: 1.使用HttpClient相关 ...

  6. Jackson解析与生成Json字符串

    Jackson API:http://tool.oschina.net/apidocs/apidoc?api=jackson-1.9.9 流式API读取和写入JSON内容离散事件. JsonParse ...

  7. c#中快速解析和提取json字符串

    dynamic stuff1 = Newtonsoft.Json.JsonConvert.DeserializeObject("json字符串"); string Text = s ...

  8. 字符串不替代_【数据挖掘】MySQL中的字符串数据类型

    首先我们需要知道,MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串类型. 01 数值类型 包含所有标准SQL支持的数值数据类型. 02 日期和时间类型 03 字符串类型 binary ...

  9. maven 加入第三方库_添加第三方库到Maven资源库

    问题: 在安卓.java.Scala中,总是要添加一些第三方的库. 在"pom.xml"添加如下: com.loopj.android.http android-async-htt ...

最新文章

  1. 谈谈Spanner和F1
  2. 自定义编译gdal库
  3. 【数字信号处理】线性常系数差分方程 ( 卷积 与 “ 线性常系数差分方程 “ | 使用 matlab 求解 “ 线性常系数差分方程 “ )
  4. 基于SpringBoot+Vue前后端分离管理系统
  5. HTML: 字體設置
  6. mysql控制台增加一个用户_MySQL 纯命令行添加用户
  7. 部分博客中的代码已放到了GitHub上,欢迎大家下载阅读!
  8. python时间计算_日期天数差计算(Python)
  9. DIY_DE2开发板介绍
  10. joptionpane java_Java JOptionPane
  11. Adobe应用网络体验管理解决方案
  12. Disconnected from the target VM, address:xxxx 或者 Process finished with exit code 1 终极解决办法 idea
  13. github可以刷星吗_国内某知名社区居然也在GitHub上玩起了刷星活动
  14. mixin风格的bases class
  15. c语言算除法并转百分比,【转】C语言除法运算符“/”和求余运算符“%”
  16. linux 汇编 寻址,汇编语言间接寻址
  17. 1 0.99999的悖论_天文学科普:带你了解反物质、费米悖论和黑洞
  18. vue2 ElementUI 表单标签、表格表头添加问号图标提示
  19. elasticsearch的.security-7索引崩溃恢复笔记
  20. unix中嘚vim编辑器

热门文章

  1. python列表中enumerate和zip函数用法
  2. python :如何将list存入txt后,再读出list
  3. python 常用PEP8规范
  4. Python Selenium 常用方法总结
  5. AcWing算法基础课 Level-2 第二讲 数据结构
  6. AcWing算法提高课 Level-3 第二章 搜索
  7. java中将对象转为基本数据类型
  8. Security 登录认证流程详细分析 源码与图相结合
  9. SpringBoot整合Swagger 自动生成在线API文档 偷懒必备 同时也是我们的基本操作啦!!!
  10. php post请求后端拿不到值_php服务器能获取post请求的数值不能获取get请求的数值...