python json模块_python json模块使用详情

#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=(1,2,3)

a=json.dumps(tup) #json中不存在元组。序列化元组之后元组变列表

print(a)

print(json.loads(a))--------------结果:

[1, 2, 3]

[1, 2, 3]

import json

mset={1,2,3} #不能是集合,序列化集合报错。

print(json.dumps(mset))-------------结果;

o.__class__.__name__)

TypeError: Object of type'set' is not JSON serializable

字典格式与json格式对比:

字典格式:

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

}

}

json格式

{"a": 123,"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的数据类型

1)# 序列化,将python的值转换为json格式的字符串。序列化json.dumps() True变true了。序列化

import json

v= [12,3,4,{'k1':'v1'},True,'asdf']

v1=json.dumps(v)

print(v1,type(v1))--------------结果;

[12, 3, 4, {"k1": "v1"}, true, "asdf"]

2)反序列化json.load(),将json格式的字符串转换成python的数据类型

import json

v2= '["mcw",123]'print(type(v2))

v3=json.loads(v2)

print(v3,type(v3))-----------------结果;['mcw', 123]

1286512-20190417170433414-1841592593.png

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

1)字典序列化:

import json

dic={"name":"mcw","age":18}

xu=json.dumps(dic)

print(xu,type(xu),type(dic))--------------结果:

{"name": "mcw", "age": 18} )列表序列化与反序列化:

import json

li=[1,2]

xu=json.dumps(li)

print(xu,type(xu),type(li))

fx=json.loads(xu)

print(fx,type(fx))------------结果:

[1, 2] [1, 2]

3)字符串序列化与反序列化:

import json

mcwstr="xiaoma"xu=json.dumps(mcwstr)

print(xu,type(xu),type(mcwstr))

fx=json.loads(xu)

print(fx,type(fx))---------------结果;"xiaoma" xiaoma

4)整型序列化与反序列化

import json

mcwint=2xu=json.dumps(mcwint)

print(xu,type(xu),type(mcwint))

fx=json.loads(xu)

print(fx,type(fx))---------------结果:2

2

5)浮点型序列化与反序列化

import json

mcwfloat=2.03xu=json.dumps(mcwfloat)

print(xu,type(xu),type(mcwfloat))

fx=json.loads(xu)

print(fx,type(fx))--------------------结果:2.03

2.03

6)布尔型序列化与反序列化:

import json

mcwbool=True

xu=json.dumps(mcwbool)

print(xu,type(xu),type(mcwbool))

fx=json.loads(xu)

print(fx,type(fx))------------------结果:true True

7)None序列化与反序列化

import json

mcwnone=None

xu=json.dumps(mcwnone)

print(xu,type(xu),type(mcwnone))

fx=json.loads(xu)

print(fx,type(fx))---------------结果;null None

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': '小马过河'}

1286512-20190418184859390-846677901.png

参考:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值