官方解释

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。人类很容易读写。机器很容易解析和生成。它基于 JavaScript编程语言的一部分, 标准ECMA-262第3版 - 1999年12月。JSON是一种完全独立于语言的文本格式,但使用C语言系列程序员熟悉的约定,包括C,C ++,C#,Java,JavaScript,Perl,Python等等。这些属性使JSON成为理想的数据交换语言。

JSON基于两种结构:

  • 名称/值对的集合。在各种语言中,这被实现为对象,记录,结构,字典,散列表,键控列表或关联数组。
  • 有序的值列表。在大多数语言中,这被实现为数组,向量,列表或序列。

这些是通用数据结构。实际上,所有现代编程语言都以某种形式支持它们。有意义的是,可与编程语言互换的数据格式也基于这些结构。

Python 中的json模块,官方介绍:https://docs.python.org/3.7/library/json.html

在python中,有专门处理json格式的模块—— json 和 picle模块

Json   模块提供了四个方法: dumps、dump、loads、load

pickle 模块也提供了四个功能:dumps、dump、loads、load  (本文不做介绍)
    +-------------------+---------------+
| Python | JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+

  

1.将Python对象转换为json格式:

dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,
default=None, sort_keys=False, **kw):
# 将生成的json串,直接存入指定的文件中,没有返回值
dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,
default=None, sort_keys=False, **kw):
# 将生成的json串返回 其他参数说明:
skipkeys:默认False,如果传入的obj是字典类型,且字典的key类型不在(``str``, ``int``, ``float``, ``bool``, ``None``)中,会报格式错误,如有,则设为Ture;
ensure_ascii:默认True,设为False时,中文显示正常;
check_circular:默认Ture,设为False时,会跳过循环引用检查,如果循环引用出错会导致溢出错误;
sort_keys:默认False,设为True时,生成的json按照key值进行排序

上代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "问道编程"
__date__ = "2019/03/18 17:50" import json print('---------------\n字符串转换:')
a = "\"foo\bar"
result = json.dumps(a) # 返回生成的json串
print('a = ', a)
print('result:', result) # 可以发现 result 和 a 在显示上一样 但是打印结果不同 说明不是一样的
print('类型:', type(result))
print('---------------\n将转换后的json写入文件:')
myfile = open('a.json', 'w')
a = [1, 2, 3, {'4': 5, '6': 7}]
json.dump(a, myfile, indent=4) # 没有返回值
myfile.close()

2.将json转换为Python对象:

load(fp, *, cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
# 从文件中读取json串,转换为Python对象返回
loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
# 将json串直接转换为Python对象

上代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "问道编程"
__date__ = "2019/03/18 17:50" import json print('---------------\n转换为列表:')
json_str = '["foo", {"bar":["baz", null, 1.0, 2]}]'
result = json.loads(json_str) # 将json串转换为Python对象
print('json_str = ', json_str)
print('result:', result)
print('json_str类型:', type(json_str))
print('result类型:', type(result))
print('---------------\n从文件中解码json:')
myfile = open('a.json', 'r')
result = json.load(myfile)
print('result:', result)
print('result类型:', type(result))

Python常用模块--json的更多相关文章

  1. python常用模块json

    python jons模块 json模块 主要是解决数据格式的转换问题,比如python接收到json对象需要转换为python对象,供python处理,亦或者python数据需要发送到其给其他客户端 ...

  2. Python常用模块——json & pickle

    序列化模块 1.什么是序列化-------将原本的字典,列表等对象转换成一个字符串的过程就叫做序列化 2.序列化的目的 1.以某种存储形式使自定义对象持久化 2.将对象从一个地方传递到另一个地方 3. ...

  3. python常用模块json、os、sys

    一.序列化 json & pickle 模块 json--用于字符串和Python数据类型间进行转换 pickle---用于python特有的类型和Python的数据类型间进行转换 json: ...

  4. Python常用模块——目录

    Python常用模块学习 Python模块和包 Python常用模块time & datetime &random 模块 Python常用模块os & sys & sh ...

  5. python常用模块集合

    python常用模块集合 Python自定义模块 python collections模块/系列 Python 常用模块-json/pickle序列化/反序列化 python 常用模块os系统接口 p ...

  6. python常用模块之json、pickle模块

    python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...

  7. python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess ...

  8. (转)python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    阅读目录 1.1.1导入模块 1.1.2__name__ 1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代 ...

  9. python——常用模块2

    python--常用模块2 1 logging模块 1.1 函数式简单配置 import logging logging.debug("debug message") loggin ...

随机推荐

  1. d 属性: 赋予字段执行动作的能力

    1.对只读属性误解 property AppSetting: ISuperobject read fAppSetting;当看到 AppInfo.AppSetting.D['lastLat'] := ...

  2. linux bash的重定向

    cnblogs原创 下面几种bash重定向各表示什么意思? find / -name passwd > /dev/null >& > /dev/null find / -na ...

  3. Python 入门基础20 --面向对象_继承、组合

    今日内容 组合:自定义类的对象作为类的属性 继承:父类与子类.多继承 1.组合 将自定义类的对象作为类的属性 class Teacher: def __init__(self, name): self ...

  4. 解决ipad连接不上电脑的问题

    检查一下信息: 1.iTunes是否安装 2.数据线是否完好 3.检查下图中的两个设备是否开启 4.最后一步是最恶心的:是否关闭了防火墙!!!! 操作步骤如下图示 我就是因为打开了防火墙,所以一直连接 ...

  5. nginx 配置文件[转]

    #运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.log; ...

  6. C++学习5-面向对象编程基础(构造函数、转换构造、静态数据成员、静态成员函数、友元)

    知识点学习 类 const作用 C语言的const限定符的含义为"一个不能改变值的变量",C++的const限定符的含义为"一个有类型描述的常量": const ...

  7. Linux下查看文件或文件夹大小的命令df 、du、ls

    转自:http://www.cnblogs.com/benio/archive/2010/10/13/1849946.html 当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的 ...

  8. Unity 发送游戏画面到 Winform

    一.首先看一下Unity界面: 设了2个摄像机,位置重叠,旋转相同,父子关系,在父摄像机上加上脚本A.cs,并将子摄像机复制给A脚本中的变量Cam: Cam用于为RenderTexture提供画面,P ...

  9. 《java程序设计》结对编程-四则运算(第一周-阶段总结)

    一.需求分析(描述自己对需求的理解,以及后续扩展的可能性) 实现一个命令行程序,要求: - 自动生成小学四则运算题目(加,减,乘,除) - 支持整数 - 支持多运算符(比如生成包含100个运算符的题目 ...

  10. 5个php实例,细致说明传值与传引用的区别

    传值:是把实参的值赋值给行参 ,那么对行参的修改,不会影响实参的值 传引用 :真正的以地址的方式传递参数传递以后,行参和实参都是同一个对象,只是他们名字不同而已对行参的修改将影响实参的值 说明: 传值 ...