python 解析json数据_python处理JSON数据

相同的数据,json格式相比与xml格式的占用空间小,解析速度更快。因此,json数据应用越来越广泛。python内置的字典格式,和json格式基本相同,可以看出,python天生就对json数据比较友好。今天我们来介绍python对json数据的处理。

JSON数据与python的字典

对于一个字典,我们可以用json.dumps()方法来将其转化为字符串。

>>> import json

>>> data = {

··· 'Chinese': 90,

··· 'Mathematics': 85,

··· 'English': 94

··· }

>>> string = json.dumps(data)

>>> print(string)

'{"Chinese": 90, "Mathematics": 85, "English": 94}'

不难发现,这里的string不就是json数据嘛。所以,字典转json数据用json.dumps()方法实现。相反,json转字典用json.loads()方法。

>>> import json

>>> string = '{"Chinese": 90, "Mathematics": 85, "English": 94}'

>>> data = json.loads(string)

>>> print(data)

{"Chinese": 90, "Mathematics": 85, "English": 94}

json数据和python的字典语法几乎完全相同,差别仅仅在:python中的True, False, None,转化为json之后会变成:true, false, null。

>>> import json

>>> characteristic = {

··· 'friendly': False,

··· 'honset': True,

··· 'wealthy': None

··· }

>>> characteristic_json = json.dumps(characteristic)

>>> print(characteristic_json)

'{"friendly": false, "honset": true, "wealthy": null}'

直接打印characteristic_json,会得到没有缩进的一行字符串,并不是很美观。json.dumps()方法还提供了一个indent参数,来控制缩进,实现美观的输出。其中,indent=4表示缩进长度为4个空格。

# 添加参数indent,实现带缩进的清晰输出

>>> print(json.dumps(characteristic, indent=4))

{

"friendly": false,

"honset": true,

"wealthy": null

}

JSON文件

city_data = {

'code': 320000,

'name': 'Jiangsu',

'subordinate': [

{

'code': 320100,

'name': 'Nanjing'

},

{

'code': 320200,

'name': 'wuxi'

},

{

'code': 320300,

'name': 'Xuzhou'

}

]

}

对于上面的python字典,也可以用json.dump()方法将其写入到文件中。同样地,使用json.load()方法也可以从类文件对象中读取数据。

# 处理json数据需要用到json库

import json

# 将字典city_data写入到文件city.json中

with open('city.json', 'w') as f:

json.dump(city_data, f)

# 从city.json中读取json数据并转化为python字典

with open('city.json', 'r') as f:

data = json.load(f)

# 数据其实没有变

>>> city_data == data

True

注意:json.dump()和json.dumps()方法有着细微但重要的区别,前者将字典转化为类文件对象,因此可以直接写入文件;后者将字典转化为字符串,可以读取其中的数据,但是不能直接写入文件。

总结json.dumps()方法将字典转化为字符串(json数据),json.loads()则相反

json.dump()方法将字典转化为类文件对象,json.load()方法将类文件对象转化为字典

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值