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

给大家推荐一个Python交流的q裙,大家在学习遇到了什么问题都可以进群一起交流,大家一起学习一起进步:610 380 249

JSON 函数

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

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

语法:

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 类型的转化对照表:

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 的类型对照表:

Demjson第三方库的使用

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

(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爬虫利器一之Requests库的用法

    官方文档 以下内容大多来自于官方文档,本文进行了一些修改和总结.要了解更多可以参考 官方文档 安装 利用 pip 安装 $ pip install requests 或者利用 easy_install ...

  2. Python爬虫利器一之Requests库的用法

    前言 之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助.入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取.那么这一节来 ...

  3. 9.Python爬虫利器一之Requests库的用法(一)

    requests 官方文档: http://cn.python-requests.org/zh_CN/latest/user/quickstart.html request 是一个第三方的HTTP库 ...

  4. python爬虫(6)--Requests库的用法

    1.安装 利用pip来安装reques库,进入pip的下载位置,打开cmd,默认地址为 C:\Python27\Scripts 可以看到文件中有pip.exe,直接在上面输入cmd回车,进入命令行界面 ...

  5. Python爬虫入门四之Urllib库的高级用法

    1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...

  6. Python爬虫之Beautiful Soup解析库的使用(五)

    Python爬虫之Beautiful Soup解析库的使用 Beautiful Soup-介绍 Python第三方库,用于从HTML或XML中提取数据官方:http://www.crummv.com/ ...

  7. 转 Python爬虫入门四之Urllib库的高级用法

    静觅 » Python爬虫入门四之Urllib库的高级用法 1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我 ...

  8. 转 Python爬虫入门三之Urllib库的基本使用

    静觅 » Python爬虫入门三之Urllib库的基本使用 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...

  9. Python爬虫利器二之Beautiful Soup的用法

    上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则表达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫Be ...

随机推荐

  1. Eureka系列(六) TimedSupervisorTask类解析

      为什么要单独讲解TimedSupervisorTask这个类呢?因为这个类在我们DiscoveryClient类的initScheduledTasks方法进行定时任务初始化时被使用得比较多,所以我 ...

  2. Python十大装B语法!你会几种?

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 Python 是一种代表简单思想的语言,其语法相对简单,很容易上手.不过,如果就此小视 Python ...

  3. Spring Cloud 2020.0.0 正式发布,全新颠覆性版本!

    Spring Cloud 2020.0.0 没错,Spring Cloud 2020.0.0 正式发布了: 感谢Java技术栈群友通知,想入群的在公众号Java技术栈后台回复:wx,正在使用 Spri ...

  4. 【进程/作业管理】篇章一:Linux进程及管理(专用内存监控类工具)------【vmstat、pmap】

    主要讲解专用内存监控工具的使用:vmstat.pmap命令的使用. 命令概览: vmstat 显示虚拟内存状态 pmap 报告进程与内存映射关系 vmstat命令是最常见的Linux/Unix监控工具 ...

  5. ReentrantLock锁-CAS与阻塞

    ReentrantLock锁 ReentrantLock通过原子操作和阻塞实现锁原理,一般使用lock获取锁,unlock释放锁 lock的时候可能被其他线程获得所,那么此线程会阻塞自己,关键原理底层 ...

  6. springcloud-ribbon&feign

    ribbon 负载均衡和远程服务调用 相关注解 @LoadBalanced Feign 远程服务调用 相关注解 @FeignClient 实例化服务调用 @SpringQueryMap pojo参数传 ...

  7. BOM主数据-用ECN实现可变BOM

    用ECN变更号实现可变BOM:通过ECN变更号的参数类型来实现BOM的可变配置. 物料编号:2104 (1)首先BOM的父项物料主数据<基本数据1>必须设置栏位"参数有效值&qu ...

  8. H5-地理定位/本地存储/拖放

    一.地理定位 Geolocation 兼容性:Internet Explorer 9+, Firefox, Chrome, Safari 和 Opera 支持Geolocation(地理定位). 一次 ...

  9. 8种常被忽视的SQL错误用法,你中招了吗?

    前言 MySQL在近几年仍然保持强劲的数据库流行度增长趋势.越来越多的客户将自己的应用建立在 MySQL 数据库之上,甚至是从 Oracle 迁移到 MySQL上来.但也存在部分客户在使用 MySQL ...

  10. 前端Vscode常用插件概述

    以下是我自己在工作中常用的插件,写给刚入门的前端coder.VSCode插件商店中实用的插件还是很多的,大家也可以对感兴趣的插件下载下来尝试一下的! 持续更新 插件名称 概述 作用 常用默认快捷键 C ...