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、string | dict: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-
更多推荐
已为社区贡献4条内容
所有评论(0)