JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。

1.json库的使用

使用 JSON 函数需要导入 json 库:import json

函数 描述
json.dumps 将 Python 对象编码成 JSON 字符串
json.loads 将已编码的 JSON 字符串解码为 Python 对象

1. json.dumps   将 Python 对象编码成 JSON 字符串。

语法

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)

例如:将python数组对象转为JSON字符串

#!/usr/bin/python
import json data = [ { 'name' : '张三', 'age' : 25}, { 'name' : '李四', 'age' : 26} ] jsonStr = json.dumps(data)
print(jsonStr)

结果:

[{"name": "\u5f20\u4e09", "age": 25}, {"name": "\u674e\u56db", "age": 26}]

例如:让JSON数据格式化输出:

#!/usr/bin/python
import json data = [ { 'name' : '张三', 'age' : 25}, { 'name' : '李四', 'age' : 26} ] jsonStr = json.dumps(data, sort_keys=True, indent=4, separators=(',', ': '))
print(jsonStr)

结果:

[
  {
    "age": 25,
    "name": "\u5f20\u4e09"
  },
  {
    "age": 26,
    "name": "\u674e\u56db"
  }
]

上面的格式化将汉字转为unicode,在讲JSON字符串转为python对象的时候是可以转为汉字的,如果不想转为unicode,可以用下面方法:

#!/usr/bin/python
import json data = [ { 'name' : '张三', 'age' : 25}, { 'name' : '李四', 'age' : 26} ] jsonStr = json.dumps(data, ensure_ascii=False)
print(type(jsonStr))
print(jsonStr)

结果:

<class 'str'>
[{"name": "张三", "age": 25}, {"name": "李四", "age": 26}]

python 原始类型向 json 类型的转化对照表:

Python JSON
dict object
list, tuple array
str, unicode string
int, long, float number
True true
False false
None null

2. json.loads  解码 JSON 数据。该函数返回 Python 字段的数据类型。

语法

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

例如:JSON字符串转py对象

#!/usr/bin/python
import json data = [ { 'name' : '张三', 'age' : 25}, { 'name' : '李四', 'age' : 26} ] jsonStr = json.dumps(data)
print(jsonStr) jsonObj = json.loads(jsonStr)
print(jsonObj)
# 获取集合第一个
print(jsonObj[1])

结果

[{"name": "\u5f20\u4e09", "age": 25}, {"name": "\u674e\u56db", "age": 26}]
[{'name': '张三', 'age': 25}, {'name': '李四', 'age': 26}]
{'name': '李四', 'age': 26}

json 类型转换到 python 的类型对照表:

JSON Python
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None

2.   Demjson第三方库的使用

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

1.  安装模块

(1)下载

https://github.com/dmeranda/demjson

(2)解压后安装

$ pwd
/c/Users/Administrator/Desktop/pytest/pymodule/demjson-release-2.2.4 Administrator@MicroWin10-1535 MINGW64 ~/Desktop/pytest/pymodule/demjson-release-2.2.4
$ python setup.py install

2.   JSON 函数

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

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

语法

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

例如:

#!/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}]

(2)demjson.decode() 函数解码 JSON 数据。该函数返回 Python 字段的数据类型。

语法:

demjson.decode(self, txt)

例如:将json字符串转为JSON对象:

#!/usr/bin/python
import demjson jsonData = '{"name":"张三","age":20,"sex":"男"}'; obj = demjson.decode(jsonData)
print(obj)
print(type(obj))

结果:

{'name': '张三', 'age': 20, 'sex': '男'}
<class 'dict'>

python json库的更多相关文章

  1. Python json库中load、loads、dump、dumps的区别与用法

    1 json.loads() 将json格式的数据转化为字典类型 data_json = '{"msg": "登录成功", "code": ...

  2. python json库序列化支持中文

    import json d = {"name":"英雄无敌7"} res = json.dumps(d) # 打印res 会显示 {"name&quo ...

  3. python安装json的方法;以及三种json库的区别

    python中的json解释库有好几个,不同版本使用方法不同. 常用有 json-py 与smiplejson 两个包 其中,json-py 包含json.py外,还有一个minjson,两者用法上有 ...

  4. python的JSON库

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. 1.json库的使用 使用 JSON 函数需要导入 json 库:import jso ...

  5. python之json库的使用

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. 1.json库的使用 使用 JSON 函数需要导入 json 库:import jso ...

  6. Python爬虫:数据分析小能手:JSON库的用法

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. 给大家推荐一个Python交流的q裙,大家在学习遇到了什么问题都可以进群一起交流,大家 ...

  7. (数据科学学习手札137)orjson:Python中最好用的json库

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,我们在日常使用Pytho ...

  8. Python json.dumps 特殊数据类型的自定义序列化操作

    场景描述: Python标准库中的json模块,集成了将数据序列化处理的功能:在使用json.dumps()方法序列化数据时候,如果目标数据中存在datetime数据类型,执行操作时, 会抛出异常:T ...

  9. 常用python机器学习库总结

    开始学习Python,之后渐渐成为我学习工作中的第一辅助脚本语言,虽然开发语言是Java,但平时的很多文本数据处理任务都交给了Python.这些年来,接触和使用了很多Python工具包,特别是在文本处 ...

随机推荐

  1. django crm2

    1.模糊查询 由于Q的可以传递字符串属性,可以进行拼接__contains 进行搜索 2.未报名筛选,未报名的存储在models的 enroll_status_choices中,存储的是 enroll ...

  2. JDK1.8 LocalDate 使用方式;LocalDate 封装Util,LocalDate工具类(四)

    未完待续 ........ 前言:       加班了好几天,终于结束上一个坑的项目了,项目交接人员全部离职,代码一行注释没有,无人问津的情况下,完成了项目,所以好的规范真的很重要. 继续日期改写 一 ...

  3. Gartner:2019 年 iPaaS 魔力象限

    http://www.199it.com/archives/869090.html 企业iPaaS产品支持越来越更广泛的使用场合,正迅速被企业采用以实现混合集成平台策略.这份魔力象限评估了17家供应商 ...

  4. USACO Protecting the Flowers

    洛谷 P2878 [USACO07JAN]保护花朵Protecting the Flowers 洛谷传送门 JDOJ 1009: 护花 JDOJ传送门 Description FJ出去砍木材去了,把N ...

  5. 每天一道Rust-LeetCode(2019-06-02)

    每天一道Rust-LeetCode(2019-06-02) Z 字形变换 坚持每天一道题,刷题学习Rust. LeetCode原题 Z 字形变换 题目描述 将一个给定字符串根据给定的行数,以从上往下. ...

  6. ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试MQTT连接阿里云物联网平台

    前言 这节看一下在阿里云上实现MQTT通信是个怎样的流程 看了很多网上的教程,感觉讲的迷迷糊糊.... 其实感觉他们是对MQTT不够透彻,所以写的文章就是个比着葫芦画瓢的感觉 在我面前这东西就是玩具. ...

  7. Adobe Illustrator 入门 新建 保存图片

    下载 AI 的破解版 我这里用的是 Adobe_Illustrator CC 2019 Lite 精简特别版 V23.0.2 简体中文版 64位 安装略 新建文档 通常是 A4 图形绘制 选择 矩形工 ...

  8. 使用 udev 进行动态内核设备管理(转自suse文档)

    第 12 章使用 udev 进行动态内核设备管理¶ 目录 12.1. /dev 目录 12.2. 内核 uevents 和 udev 12.3. 驱动程序.内核模块和设备 12.4. 引导和启动设备设 ...

  9. 微服务异步架构---MQ之RocketMQ

    “我们大家都知道把一个微服务架构变成一个异步架构只需要加一个MQ,现在市面上有很多MQ的开源框架.到底选择哪一个MQ的开源框架才合适呢?” 一.什么是MQ?MQ的原理是什么? MQ就是消息队列,是Me ...

  10. ShowDoc 软件开发团队接口文档管理利器

    ShowDoc是一个非常适合IT团队的在线API文档.技术文档工具.你可以使用Showdoc来编写在线API文档.技术文档.数据字典.在线手册. 这里介绍 Showdoc 这款开源(免费)文档管理系统 ...