1 json简介

1.1 json是什么?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。

“在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,任何正常的软件开发人员碰到XML都会感觉头大了,最后大家发现,即使你努力钻研几个月,也未必搞得清楚XML的规范。

终于,在2002年的一天,道格拉斯·克罗克福特(Douglas Crockford)同学为了拯救深陷水深火热同时又被某几个巨型软件企业长期愚弄的软件工程师,发明了JSON这种超轻量级的数据交换格式。”

1.2 json特点

json格式适合阅读,容易理解,对计算机来说处理起来也很方便。json文本格式与C家族语言(C,C++,C#,Java,JavaScript,Perl,Python以及许多其他语言)的传统变量非常的相似,它的文本语言建立在以下两种结构上:

l “名称/值”对的无序集合(以下简称键值对),在其他编程语言中,这种“名称/值”对可能称为对象、记录、结构、字典、哈希表、键表或者关联数组。

l “值”的有序列表,对应其他语言中的数组,向量,链表或者序列。

上面这些基本的数据结构,几乎所有现代语言都能支持其中一种或多种,因此json作为一种数据交换格式就理所当然了。

1.3 json格式

名称(key/name):用双引号包含的字符串。

值(value)可以是双引号包含的字符串,真假值(true,false),空(null),对象或者数组,也就是说可以是嵌套结构。

对象(object)是无序键值对的集合:以左花括弧“{”开始,右花括弧“}”结束,每个对名称(name)与值(value)之间使用“:”分隔,键值对之间使用逗号“,”分隔。

数组(array)是有序值的序列:array以左方括弧“[”开始,右方括弧“]”结束,值与值之间使用逗号“,”分隔。

字符串(string)是使用双引号包含的数个(可以是0个)连续unicode字符,使用反斜杠“\”作为转义字符,类似C语言和Java中的字符串。

整数(number)除了不支持8进制和16进制,其他特性与C语言和Java语言整数相同。

2 Python3 JSON使用

Python内置可以处理JSON数据的包:

1 import json

在Python中,JSON数据表示为一个字符串

1 json_data = '{"name": "Bob", "languages": ["Python", "Java"]}'

json数据还可以从文件中读取,Python中的常用JSON方法如下:

函数

描述

json.dumps()

将Python对象编码成JSON字符串

json.loads()

将已编码的JSON字符串解码为Python对象

2.1 在Python中解析JSON

使用Python JSON包中的json.loads()函数可以轻松解析JSON字符串和JSON文件为Python对象。

例1:在Python中将JSON解析为dict

1 importjson2

3 person = '{"name": "Bob", "languages": ["English", "Fench"]}'

4 person_dict =json.loads(person)5

6 #Output: {'name': 'Bob', 'languages': ['English', 'Fench']}

7 print( person_dict)8

9 #Output: ['English', 'French']

10 print(person_dict['languages'])

例2:在Python中读取JSON文件并解析person是JSON字符串,person_dict是Python dict对象。

假设你的如下JSON数据存放在名字为“person.json”的文件中

1 {"name": "Bob",2 "languages": ["English", "Fench"]3 }

可以使用如下方式解析该文件中的JSON数据:

1 importjson2

3 with open('path_to_file/person.json') as f:4 data =json.load(f)5

6 #Output: {'name': 'Bob', 'languages': ['English', 'Fench']}

7 print(data)

代码中使用open()函数打开文件,使用json.load()函数解析JSON数据,将解析得到的数据放在data变量。

JSON字符串在解析到Python对象时的默认数据对应见下表

JSON

Python

object

dict

array

list

string

unicode

number (int)

int, long

number (real)

float

true

True

false

False

null

None

2.2 将Python数据打包成json字符串

使用Python JSON包中的json.dumps()函数可以将Python数据打包成JSON字符串。

例3:将dict转成JSON

1 importjson2

3 person_dict = {'name': 'Bob',4 'age': 12,5 'children': None6 }7

8 person_json =json.dumps(person_dict)9

10 #Output: {"name": "Bob", "age": 12, "children": null}

11 print(person_json)

例4:将JSON数据写入文件

上面的程序中,打开一个文件名为“person.txt”的文件,打开模式为写入“w”,如果文件不存在,就会自动新建一个。接着使用json.dump()函数将person_dict数据打包成JSON字符串,写入到打开的文件中。

程序运行后会在该代码所在目录生成person.txt文件,文件内容应该如下;

1 {"name": "Bob", "languages": ["English", "Fench"], "married": true, "age": 32}

2.3 格式化输出JSON数据

为了分析JSON数据,我们可能需要以阅读友好的格式输出JSON数据。通过向json.dumps()函数传递格式控制参数indent和sort_keys可以实现该功能。

例5:格式化打印json数据

1 importjson2

3 person_string = '{"name": "Bob", "languages": "English", "numbers": [2, 1.6, null]}'

4

5 #Getting dictionary

6 person_dict =json.loads(person_string)7

8 #Pretty Printing JSON string back

9 print(json.dumps(person_dict, indent = 4, sort_keys=True))

上述参数意思为:缩进4个空格,对键值对进行升序排序,运行后输出结果如下:

1 {2 "languages": "English",3 "name": "Bob",4 "numbers": [5 2,6 1.6,7 null8 ]9 }

可以看到,输出结果多了换行和缩进,看起来整洁多了。

Python对象在打包为JSON字符串过程中默认数据对应见下表

Python

JSON

dict

object

list, tuple

array

str

string

int, float, int- & float-derived Enums

number

True

true

False

false

None

null

3 json数据样例

1 {2 "firstName": "John",3 "lastName": "Smith",4 "isAlive": true,5 "age": 27,6 "address": {7 "streetAddress": "21 2nd Street",8 "city": "New York",9 "state": "NY",10 "postalCode": "10021-3100"

11 },12

13 "phoneNumbers": [14 {15 "type": "home",16 "number": "212 555-1234"

17 },18 {19 "type": "office",20 "number": "646 555-4567"

21 },22 {23 "type": "mobile",24 "number": "123 456-7890"

25 }26 ],27 "children": [],28 "spouse": null29 }

4 参考链接

python怎么使用json_Python JSON的简单使用相关推荐

  1. python自动解析json_Python语言解析JSON详解

    本文主要向大家介绍了Python语言解析JSON详解,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. JSON 函数使用 JSON 函数需要导入 json 库:import jso ...

  2. python生成递归json_python函数、递归、json模块操作

    一.修改文件 修改文件方法:简单粗暴直接,步骤以下: #1.打开一个文件,获取到文件的内容 #2.对内容进行修改 #3.清空文件的内容 #4.把新的内容写入到文件 代码示例: f=open('user ...

  3. python request post json_python接口之request测试:以json格式发送post请求,.json方法,查看响应结果的情况...

    json和dict python中的dict类型要转换为json格式的数据需要用到json库: importjson = json.dumps() = json.loads() 需要注意的是pytho ...

  4. python中的json_python中json的使用

    在编写接口传递数据时,往往需要使用JSON对数据进行封装.python和json数据类型的转换,看作为编码与解码. 编码:json.dumps() PythonJSON dict object lis ...

  5. python json的简单学习

    2019独角兽企业重金招聘Python工程师标准>>> import jsona=[1, 2.1, 'abc', (1, 2, 3), {'a': 1}] encode_json = ...

  6. python 怎么处理json_Python是怎样处理json模块的

    首先,了解下什么是JSON? JSON:JavaScript Object Notation [JavaScript 对象表示法] JSON 是一种轻量级的数据交换格式,完全独立于任何程序语言的文本格 ...

  7. python str转json_Python中如何将一个字符串转换为json格式呢?

    摘要: 下文讲述Python中字符串转换为json格式的方法分享,如下所示: json是各大语言都支持的一个对象,在web API开发中,我们经常使用json格式进行数据传输, 那么在Python中, ...

  8. 简单 Python 快乐之旅之:Python 基础语法之 JSON 专题

    文章目录 1. 解析 JSON 字符串示例 1.1. 解析 JSON 字符串为 Python 字典 1.2. 解析 JSON 字符串为 Python 列表 2. 如何将 Python 类对象转化为 J ...

  9. python 对象转换为json_Python Python对象转换成JSON

    1.从Python对象转换成JSON 如果有Python对象,则可以使用json.dumps()方法将其转换为JSON字符串. 例如: 从Python对象转换为JSON:import json # a ...

最新文章

  1. 机器学习PAL产品优势
  2. [转载]Android: 如何实现ScrollView中含有ListView?
  3. 基于Tomcat7、Java、WebSocket的服务器推送聊天室
  4. 文本分析软件_读书笔记:伍多库卡茨质性文本分析:方法、实践与软件使用指南...
  5. php ob gzhandler,php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
  6. 邮政管理部门发话:未获用户同意投放快递柜属违法行为
  7. Ansible1:简介与基本安装【转】
  8. tomcat 无端口号访问
  9. graphpad做饼图_3D 饼环图初步完成
  10. 在大多数人转向.NET和JAVA阵营的时候,我正在悄悄地向古老的COBOL招手
  11. 汽车电子技术——ECU/MCU嵌入式软件开发
  12. echarts 折线图y轴自定义 使用icon
  13. Android 支付宝小程序跳转
  14. dvi是什么意思_VGA线和DVI线,VGA线和DVI线是什么意思
  15. 运算放大器的简单介绍和运用
  16. u盘第一扇区 分区表_硬盘主引导扇区、分区表和分区引导扇区(MBR、DPT、DBR、BPB)详解...
  17. PDF文件中的文字怎么修改?来试试这种修改方法
  18. 结绳计数——最原始的备忘录
  19. 使用wifi网卡笔记1----网卡选型、开发环境搭建、内核配置
  20. 设计模式之路 | 建造者模式

热门文章

  1. Python地信专题 | 基于geopandas的空间数据分析-文件IO篇
  2. Windows下Core_Audio_APIs的使用简介
  3. 3大常见光伏加盟骗局大起底
  4. eclipse The current branch is not configured for pull No value for key remote.origin
  5. C#实现Access导入导出Excel
  6. 求最值(最大值和最小值)
  7. wp7 给TextBox设置圆角边框
  8. 将windows 客户机加入msits.com域环境中
  9. 田志刚:企业知识管理与用户创造内容(UGC)
  10. numpy中的broadcasting