Python下的json使用

概念介绍

1、JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
2、在python中的json应用就是实现一些数据结构(列表、元组、字典)到字符串之间的转换,当数据结构变为字符串之后就很容易在程序之间传递。
3、Python中序列化指的是将Python中的数据结构(列表、元组、字典)编码转换为JSON格式的字符串;而反序列化指的是将JSON格式的字符串编码转换为Python中的数据结构(列表、元组、字典);
4、元组经过序列化处理后,再通过反序列化处理后,数据类型不再是元组(而是列表);但列表、字典经过序列化处理后,再通过反序列化处理后,数据类型不变。

基本使用

函数描述
json.dumps(data)将 Python 对象编码成 JSON 字符串
json.loads(JSON)将已编码的 JSON 字符串解码为 Python 对象
json.dump(data,fpPython内置类型序列化为json对象后写入文件
json.load(fp读取文件中json形式的字符串元素转化为原来的Python类型

dumps()或者dunp()返回类型都是str
分清加s和不加s都是干什么的,以及参数的区别。

import json

lst = [1,2,"ok",[2,3]]
tple = (2,3,4,"haha")
dic = {"name":"Tom","Age":12}

json1 = json.dumps(lst)
print("list转变为json字符串",json1)
#list转变为json字符串 [1, 2, "ok", [2, 3]]

json2 = json.dumps(tple)
print("tuple转变为json字符串",json2)
#tuple转变为json字符串 [2, 3, 4, "haha"]

json3 = json.dumps(dic)
print("dict转变为json字符串",json3)
#dict转变为json字符串 {"name": "Tom", "Age": 12}	#类型都是str

print(json.loads(json1))#json.loads()是函数但不是方法
#[1, 2, 'ok', [2, 3]]
print(json.loads(json2))
#[2, 3, 4, 'haha']
print(json.loads(json3))
#{'name': 'Tom', 'Age': 12}

"""dump()和load()"""
with open(r"C:\Users\lenovo\Desktop\sent.txt","w") as fp:
    json.dump(lst,fp)
    #成功将json字符串保存至本地
with open(r"C:\Users\lenovo\Desktop\sent.txt","r") as fp:
    result = json.load(fp)
    print(result)
#[1, 2, 'ok', [2, 3]]  

参数详解

1、**dumps()和dump()**二者参数大致一样只是相差了一个文件指针。

(1) indent:非负整数,表示编码后的字符串的缩进方式,
    默认为None表示无缩进,此时一行打印出来,
    一般设为4,
    如果设为0则只会添加换行符。

indent参数根据数据格式缩进显示,读起来更加清晰, indent的值,代表缩进空格式:

(2)ensure_ascii
输出真正的中文需要指定ensure_ascii=False,如果使用默认配置,输出的会是‘凉凉’的ASCII字符吗,而不是真正的中文。这是因为json.dumps 序列化时对中文默认使用的ascii编码。

lst = [1,2,"你好",[2,3]]

"""无缩进,使用ascii"""
json1 = json.dumps(lst)
print(json1)
[1, 2, "\u4f60\u597d", [2, 3]]

"""有缩进,缩进为0,使用ascii"""
json1 = json.dumps(lst,indent = 0)
print(json1)
[
1,
2,
"\u4f60\u597d",
[
2,
3
]
]

"""有缩进,缩进为4,使用ascii"""
json1 = json.dumps(lst,indent = 4)
print(json1)
[
    1,
    2,
    "\u4f60\u597d",
    [
        2,
        3
    ]
]
"""有缩进,缩进为4,不使用ascii"""
json1 = json.dumps(lst,indent = 4,ensure_ascii = False)
print(json1)
[
    1,
    2,
    "你好",
    [
        2,
        3
    ]
]

load()一般不使用额外的参数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值