python其他知识目录

#json。数据交换用到json文件。json是特殊的字符串。访问网站,返回的就是json

1、json简介:

定义:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
特点:简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:
  对象表示为键值对
  数据由逗号分隔
  花括号保存对象
  方括号保存数组
序列化简单定义:变成json格式。定义:变成json格式。
反序列化简单定义: json格式变其它

2、注意点

注意点:
两种语言之间数据类型的差异,用json交换。
外层必须是字典或列表这两个容器类数据类型。
必须是双引号(因为java等其它语言有使用双引号表示字符串,单引号不表示字符串)
json是字符串
json中不存在元组。序列化元组之后元组变列表;不能是集合,序列化集合报错。序列化支持类型可以进Python官方文件介绍里面有介绍。
以后传值就是传一个也要用字典或列表

import json
tup=(,,)
a=json.dumps(tup) #json中不存在元组。序列化元组之后元组变列表
print(a)
print(json.loads(a))
--------------结果:
[, , ]
[, , ] import json
mset={,,} #不能是集合,序列化集合报错。
print(json.dumps(mset))
-------------结果;
o.__class__.__name__)
TypeError: Object of type 'set' is not JSON serializable

字典格式与json格式对比:
字典格式:

d = {
'a': ,
'b': {
'x': ['A', 'B', 'C']
}
}

json格式

{
"a": ,
"b": { #必须是双引号(因为java等其它语言有使用双引号表示字符串,单引号不表示字符串)
"x": ["A", "B", "C"]
}
}

可以看到, Dictionary和JSON非常接近, 而Python中的json库提供的主要功能, 也是两者之间的转换.

3、json使用(常用):

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。
在python中,有专门处理json格式的模块—— json 和 picle模块
  Json 模块提供了四个方法: dumps、dump、loads、load
  pickle 模块也提供了四个功能:dumps、dump、loads、load
序列化:将python的值转换为json格式的字符串。
反序列化:将json格式的字符串转换成python的数据类型

)# 序列化,将python的值转换为json格式的字符串。序列化json.dumps() True变true了。序列化
import json
v = [,,,{'k1':'v1'},True,'asdf']
v1 = json.dumps(v)
print(v1,type(v1))
--------------结果;
[, , , {"k1": "v1"}, true, "asdf"] <class 'str'> )反序列化json.load(),将json格式的字符串转换成python的数据类型
import json
v2 = '["mcw",123]'
print(type(v2))
v3 = json.loads(v2)
print(v3,type(v3))
-----------------结果;
<class 'str'>
['mcw', ] <class 'list

如下验证:dumps可以格式化大部分的基本数据类型为字符串

)字典序列化:
import json
dic={"name":"mcw","age":}
xu=json.dumps(dic)
print(xu,type(xu),type(dic))
--------------结果:
{"name": "mcw", "age": } <class 'str'> <class 'dict'> )列表序列化与反序列化:
import json
li=[,]
xu=json.dumps(li)
print(xu,type(xu),type(li))
fx=json.loads(xu)
print(fx,type(fx))
------------结果:
[, ] <class 'str'> <class 'list'>
[, ] <class 'list'> )字符串序列化与反序列化:
import json
mcwstr="xiaoma"
xu=json.dumps(mcwstr)
print(xu,type(xu),type(mcwstr))
fx=json.loads(xu)
print(fx,type(fx))
---------------结果;
"xiaoma" <class 'str'> <class 'str'>
xiaoma <class 'str'> )整型序列化与反序列化
import json
mcwint=
xu=json.dumps(mcwint)
print(xu,type(xu),type(mcwint))
fx=json.loads(xu)
print(fx,type(fx))
---------------结果:
<class 'str'> <class 'int'>
<class 'int'> )浮点型序列化与反序列化
import json
mcwfloat=2.03
xu=json.dumps(mcwfloat)
print(xu,type(xu),type(mcwfloat))
fx=json.loads(xu)
print(fx,type(fx))
--------------------结果:
2.03 <class 'str'> <class 'float'>
2.03 <class 'float'> )布尔型序列化与反序列化:
import json
mcwbool=True
xu=json.dumps(mcwbool)
print(xu,type(xu),type(mcwbool))
fx=json.loads(xu)
print(fx,type(fx))
------------------结果:
true <class 'str'> <class 'bool'>
True <class 'bool'> )None序列化与反序列化
import json
mcwnone=None
xu=json.dumps(mcwnone)
print(xu,type(xu),type(mcwnone))
fx=json.loads(xu)
print(fx,type(fx))
---------------结果;
null <class 'str'> <class 'NoneType'>
None <class 'NoneType'>

4、json序列化过程中的中文显示

import json
v = {'k1':'alex','k2':'魔降风云变'}
print(json.dumps(v))
val = json.dumps(v,ensure_ascii=False)
print(val)
--------------------结果:
{"k1": "alex", "k2": "\u9b54\u964d\u98ce\u4e91\u53d8"}
{"k1": "alex", "k2": "魔降风云变"}

5、json.dump 和json.load(不常用)

序列化:
import json
v = {'k1':'yh','k2':'小马过河'}
f = open('xiaoma.txt',mode='w',encoding='utf-8') #文件不存在就会生成
val = json.dump(v,f)
print(val)
f.close()
----------------结果:
None
#dump将内容序列化,并写入打开的文件中。
反序列化:
import json
f = open('xiaoma.txt',mode='r',encoding='utf-8')
data = json.load(f)
f.close()
print(data,type(data))
---------------结果:
{'k1': 'yh', 'k2': '小马过河'} <class 'dict'>

参考:
1)https://www.cnblogs.com/tjuyuan/p/6795860.html
2)http://www.runoob.com/python/python-json.html
3)https://www.jb51.net/article/139498.htm

python json模块使用详情的更多相关文章

  1. python json模块(15)

    JSON 的全称是 JavaScript Object Notation,即 JavaScript 对象符号,它是一种轻量级.跨平台.跨语言的数据交换格式,其设计意图是把所有事情都用设计的字符串来表示 ...

  2. Python—json模块

    用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...

  3. Python: json模块实例详解

    ref:https://www.jianshu.com/p/e29611244810 https://www.cnblogs.com/qq78292959/p/3467937.html https:/ ...

  4. python json模块 超级详解

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也 ...

  5. python: json模块 --JSON编码和解码

    json 源代码: Lib/json/__init__.py json.dump() import json numbers = [1, 2, 3, 4] with open('linshi.py', ...

  6. python json模块小技巧

    python的json模块通常用于与序列化数据,如 def get_user_info(user_id): res = {"user_id": 190013234,"ni ...

  7. python sys模块使用详情

    python常用模块目录 sys模块提供了一系列有关Python运行环境的变量和函数.1.sys.argv可以用sys.argv获取当前正在执行的命令行参数的参数列表(list).变量解释sys.ar ...

  8. python --- json模块和pickle模块详解

    json:JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式(用于数据序列化和反序列化).(适用于多种编程语言,可以与其他编程语言做数据交换 ...

  9. python json 模块

    什么是json? json是返回的是字符串格式,把python数据类型列表.字典转换成json字符串格式, 这种格式java php 其他语言都可以认识的字符串,可以跨语言交流. json,用于字符串 ...

随机推荐

  1. 理解JavaScript继承(二)

    理解JavaScript继承(二) 5.寄生式继承 function object(o) { function F() {} F.prototype = o; return new F(); } fu ...

  2. 【转】tomcat搭建本地服务器 实现apk更新下载

    转自:http://www.kankanews.com/ICkengine/archives/121748.shtml 做apk的更新下载功能,测试的时候需要个服务器. 所以就选用 Apache To ...

  3. 论文笔记 CVPR-2014 DeepReID Deep filter pairing neural network for person re-identification

    1. 摘要 第一篇用深度学习做Reid的文章,提出的FPNN采用端到端的训练方式,解决行人再识别的不对齐,光照,姿态等问题. 建立了一个新的带benchmark的数据集CUHK03,表现性能良好. 2 ...

  4. (转)使用 Nmon 监控 Linux 的系统性能

    看到一个使用Nmon的文章,写的很基础,适合新手,转载之.下面是原文的信息: 作者:Hitesh Jethva 译者:sonofelice 校对:wxy 传送门:linux.cn/article-68 ...

  5. GoogleTest初探(1)

    此篇主要了解一下GoogleTest中的断言. 总的来说,GoogleTest中的断言分为两大类:EXPECT_*和ASSERT_*,这两者在测试成功或失败后均会给出测试报告,区别是前者在测试失败后会 ...

  6. 使用JS与jQuery实现文字逐渐出现特效

    该需求出现原因:想要实现一个在一开始加载页面时就出现一行文字逐渐出现的效果,且需要实现的是一种逐渐的过渡出现效果为不是一种生硬的突然间歇性出现.于是便开始尝试利用最近正在学习的jQuery技术和JS实 ...

  7. Glide Golang包管理

    Golang的包管理乱得不行,各种工具横空出世,各显神通啊.用了几个下来,发现 Glide 是比较好用的,使用了 vender 来进行管理,多个开发环境的版本不冲突,功能强大,配置文件也足够简单. 初 ...

  8. 批量生成文件夹内所有文件md5

    说明:md5批量生成批处理脚本,无需安装任何软件,直接调用系统文件进行生成,简单基于windows命令编写了一个批量生成md5值的脚本. 使用说明:新建文本文档,命名为get_md5.bat,直接将代 ...

  9. jQuery学习-显示与隐藏

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. python基础学习1-json,pickle的序列化和反序列化

    import requests import json dic={'k1':'v1'} print(dic,type(dic)) result = json.dumps(dic)#调用dumps方法把 ...