python——json、字典的区别及相互转换方法

前言

json,是一种轻量级的数据交换格式,由JavaScript语言创建,广泛应用于网页数据交互,常见于爬虫和数据分析领域。
json格式简洁、结构清晰,存储格式为:键值对(key:value)
在python中,字典(dict)与json非常相似,都是键值对(key:value)形式。

一、 json与字典的区别

json与字典的区别,如下表:

json格式dict(字典,python)
一种数据格式,纯字符串。可以被解析成python的字典(dict)形式或其他形式。一种数据结构
key只能是字符串key可以是python中任意不可变数据:字符串、数值、元组等
key可以是有序、重复的key不能重复
字符串只能使用双引号字符串可以用单引号、双引号、三引号
任意key存在默认值undefined任意key没有默认值
json:true、false、null、stringdict:Ture、False、None、str
json中文是unicode编码,如,“\u6211”

二、json与字典相互转换

首先,创建一个字典(a_dict),作为举例。

a_dict = {'a': 1, "b": 'qw', '''c''': ['q', 'w'], 'd': '您好'}
print(type(a_dict))
print(a_dict)

在这里插入图片描述

(一)将字典转化为json格式数据

json.dumps():将python数据类型转换成json字符串,dict→json
语法:
json.dumps(obj,ensure_ascii=True,indent=None,encoding=“utf8”,sort_keys=False,separators=None…)

常用参数释义
ensure_ascii默认为True,中文编码为unicode;改成False,则可以输出中文汉字。
indent默认为None,参数根据格式缩进显示,表示缩进几个空格,接收int类型数值。
sort_keys默认为False,不按字典的key排序;改成True,按照字典的key排序
separators指定分隔符,默认为None;包含dict每个元素间分隔符(逗号“,”),key与value之间的分隔符(冒号“:”),指定分隔符后,原来的分隔符则直接去掉
encoding编码,默认utf-8

将字典a_dict,转换为json格式数据,代码如下:

# 将字典a_dict转换为json
import json
a_dict = {'a': 1, "b": 'qw', '''c''': ['q', 'w'], 'd': '您好'}
a_json = json.dumps(a_dict)
print(type(a_json))
print(a_json)

在这里插入图片描述
注:字典a_dict,转换为json数据a_json后,有以下几点变化:
(1)数据类型由字典dict变成str
(2)a_dict中的单引号、三单引号全部统一为双引号
(3)中文“您好”转换为unicode编码“\u60a8\u597d”。
如果想要正常显示中文,可以加入参数:ensure_ascii=False,代码变为:

# 将字典a_dict转换为json
import json
a_dict = {'a': 1, "b": 'qw', '''c''': ['q', 'w'], 'd': '您好'}
a_json = json.dumps(a_dict, ensure_ascii=False)
print(type(a_json))
print(a_json)

在这里插入图片描述
(4)如果数据很多,直接一排一排这样显示,很难看清结构。加入参数:indent=缩进空格数,可以美观清晰的输出,代码如:

import json

a_dict = {'a': 1, "b": 'qw', '''c''': ['q', 'w'], 'd': '您好'}
a_json = json.dumps(a_dict, ensure_ascii=False, indent=2)  # 缩进2个空格
print(type(a_json))
print(a_json)

在这里插入图片描述

(二)将json格式数据转换为字典

json.loads():将json字符串解析成python数据类型,json→dict
将a_json转换为字典格式数据,如下:

b_dict = json.loads(a_json)
print(type(b_dict))
print(b_dict)

在这里插入图片描述

以上就是python中,json与字典数据格式之间的区别,及相互转换方法,可供参考。

-end-

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一位代码

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值