当前位置: 首页 > news >正文

Python快速上手系列--JSON--入门篇

本章我们来看看json的一些应用。简单易懂还实用。

一起来看看数据类型以及一些语法规则吧

1、数字(整数或浮点数) 如:{"age":18, "score":70.5} 注意,数字直接写,不需要带任何符号

2、字符串(在双引号中) 如:{"name":"托马”, "sex":"男"} 注意:字符串是用双引号或者单引号引起 来的内容

3、逻辑值(true 或 false) 如:{ "flag":true } 注意:true,false,直接写,不需要加引号

4、数组(在中括号中) 如 :{"score" : [100,80,90]} 标识符:[],数组类型是有索引值,索 引值是从0开始的

5、对象(在大括号中) 如:{ "stu1":{"name":"托马" , "sex":"男"} , "url":"https://blog.csdn.net/weixin_52040868" }

6、null 如 :{"score" : Null}

JSON与字典的区别

json--key只能是字符串,value:(字符串, 数字, 对象, 数组, 布尔值或 null)

dict--key可以是数字(整数,浮点数,布尔值),字符串,元组,就是不能为列表 value可以是数字(整数,浮点数,布尔值),字符串,元组,列表,字典

方法

作用

json.dumps()

将python对象编码成Json字符串

json.loads()

将Json字符串解码成python对象

json.dump()

将python中的对象转化成json储存到文件中

json.load()

将文件中的json的格式转化成python对象提取出来

看例子

dump

import jsonname = ['托马', '男', 18]with open('name.json', 'w') as file_name:    i = json.dump(name, file_name)    print(type(i), id(i))# <class 'NoneType'> 140726372809944

需要先导入json的包,我们首先创建一个列表,然后我们使用with open()创建一个名为name.json的文件,json.dump()是用来存储数据的,所以这里是创建一个文件并将name列表写入。

load

写入了列表内容后,我们怎么读取到已经存储到name.json中的内容呢,那么我们就需要用到json.load()函数了。

with open('name.json', 'r', encoding='utf-8') as r:    rd = json.load(r)    print(type(rd), id(rd))# <class 'list'> 1829847702976

这里我们可以定义一个变量去接收json.load()函数读取的内容再通过print打印出来。

dumps

data_1 = {"stu1": {'name': '托马', "sex": "男"}, "url": "https://blog.csdn.net/weixin_52040868"}print(type(data_1), id(data_1))dumps_ = json.dumps(data_1, ensure_ascii=False)print(type(dumps_), id(dumps_))print(dumps_)# <class 'dict'> 1607962417344# <class 'str'> 2222289040752

正如上面所说,将python对象编码成Json字符串,本身我们定义的变量就是字典类型的,经过dumps函数转变后,就是字符串格式了。

值得注意的是:'name': '托马',这里是单引号,经过dumps函数转变后,变成了双引号。这也就是我们前面说的"字符串(在双引号中)"。单双引号的在字典中都可行,但是在json中只能是双引号。

load

data_2 = '{"stu1": {"name": "托马", "sex": "男"}, "url": "https://blog.csdn.net/weixin_52040868"}'print(type(data_2), id(data_2))loads_ = json.loads(data_2)print(type(loads_), id(loads_))print(loads_["stu1"])# <class 'str'> 1607965048368# <class 'dict'> 1607965495552# {'name': '托马', 'sex': '男'}

这里也是的,我们将上述例子稍作改变,改成字符串,我们可以通过loads函数直接变成我们所需要的对象,这里是字典类型的。至于取值,我们就跟字典取值类似的方法。

这里还有一个小实例,仅供参考,小伙伴也可以跟着一起码一码:

try:    with open('name_.json', 'r') as file_name:        names = json.load(file_name)        print(names)except:    i = input("请输入名字:")    with open('name_.json', 'w') as f:        json.dump(i, f)        print(f"{i}")

这里使用之前所讲的异常处理,忘记了的小伙伴可以复习复习,如果没有这个json文件,那么就是进入except,控制台输入,然后自动创建一个文件。

http://www.lryc.cn/news/7922.html

相关文章:

  • axios中的GET POST PUT PATCH,发送请求时params和data的区别
  • hume项目k8s的改造
  • MACD红二波选股公式,选出MACD二次翻红的标的
  • mac上安装mysql
  • Django 模型继承问题
  • Vue3篇.01-简介及基本使用,项目创建方式, 模板语法, 事件监听, 修饰符
  • 别学英语了,真的
  • CRM系统五大技巧集成Excel为销售流程赋能
  • 交通部互通互联码的根证书规则
  • Map和Set(Java详解)
  • Vue 3的响应式机制
  • 30岁了,说几句大实话
  • AsyncTask使用及源码查看Android P
  • 花2个月面过华为测开岗,拿个30K不过分吧?
  • JAVA练习51-最大子数组和
  • Inception Transformer
  • 10分钟学会数据库压力测试,你敢信?
  • 论文阅读 | Video Super-Resolution Transformer
  • 7-6 带头节点的双向循环链表操作
  • npm publish 、 npm adduser 提示 403 的问题
  • Java 8的函数式接口使用示例
  • 2023年企业如何改善员工体验?为什么员工体验很重要?
  • 设计模式:桥接模式让抽象和实现解耦,各自独立变化
  • C++学习记录——십 STL初级认识、标准库string类
  • 【redis】redis缓存与数据库的一致性
  • XCP实战系列介绍12-基于Vector_Davinci工具的XCP配置介绍(一)
  • Unity Material详解
  • 碰撞检测算法分类
  • 代码随想录第十二天(
  • 电源模块 DC-DC直流升压正负高压输出12v24v转±110V±150V±220V±250V±300V±600V