热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python中json.dumps()和json.loads()的使用方法详解——Python面试与JavaScript面试必备知识

在Python中,`json.dumps()`和`json.loads()`是处理JSON数据的核心函数。`json.dumps()`用于将字典或其他可序列化对象转换为JSON格式的字符串,而`json.loads()`则用于将JSON字符串解析为Python对象。本文详细介绍了这两个函数的使用方法及其在Python和JavaScript面试中的重要性,帮助读者掌握这些关键技能。

一、JSON介绍

JSON代表Javascript对象符号。它是一种轻量级的数据交换格式,用于存储和交换数据。它是一种独立于语言的格式,非常容易理解,因为它本质上是自描述的。 python中有一个内置包,它支持JSON数据,称为json。 JSON中的数据表示为quoted-strings,由大括号{}之间的键值映射组成。通俗来说就是一种在接口中易于使用的数据处理模块,但是json不属于数据格式。

二、Python和Json数据类型的映射

JSONPython
objectdict
arraylist
stringstr
numberint
trueTrue
falseFalse
nullNone

三、json.load(s)与json.dump(s)区别

json.load:表示读取文件,返回python对象

json.dump:表示写入文件,文件为json字符串格式,无返回

json.dumps:将python中的字典类型转换为字符串类型,返回json字符串 [dict→str]

json.loads:将json字符串转换为字典类型,返回python对象 [str→dict]

load和dump处理的主要是 文件

loads和dumps处理的是 字符串

json.load()从json文件中读取数据

json.loads()将str类型的数据转换为dict类型

json.dumps()将dict类型的数据转成str

json.dump()将数据以json的数据类型写入文件中

四、测试

4.1 json.dumps()

import json

data = {
    "fruit":"apple",
    "vegetable":"cabbage"
}
print(data,type(data))

data = json.dumps(data)  # dict转json
print(data,type(data))

返回:

{'fruit': 'apple', 'vegetable': 'cabbage'}
{"fruit": "apple", "vegetable": "cabbage"}

4.2 json.loads()

data = """{
"fruit": "apple",
"vegetable": "cabbage"
}"""
# 一般此时data为request.text返回值
print(data, type(data))
data = json.loads(data)
print(data, type(data))

返回:

{
"fruit": "apple",
"vegetable": "cabbage"
}
{'fruit': 'apple', 'vegetable': 'cabbage'}

4.3 json.dump()

1.写str

a.py中:

data = "wyt"
with open("b.json", "w") as f:
    json.dump(data, f)

with open("b.json","r",encoding="utf-8") as f :
    f_str = json.load(f)
    print(f_str,type(f_str))

返回:

wyt

2.写dict

a.py中:

data = {
    "fruit":"apple",
    "vegetable":"cabbage"
}
with open("b.json", "w") as f:
    json.dump(data, f)

with open("b.json","r",encoding="utf-8") as f :
    f_str = json.load(f)
    print(f_str,type(f_str))

返回:

{'fruit': 'apple', 'vegetable': 'cabbage'}

4.4 json.load()

a.json中存在:

{
"fruit": "apple",
"vegetable": "cabbage"
}

a.py中:

with open("a.json","r",encoding="utf-8") as f :
    f_str = json.load(f)
    print(f_str,type(f_str))

返回:

{'fruit': 'apple', 'vegetable': 'cabbage'}

五、报错分析

5.1 本地代码

data = """{
"fruit":"apple",
"vegetable":"cabbage"
}"""
data = json.loads(data)

5.2 报错返回

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 1 (char 2)

5.3 报错分析与解决

json内部要使用双引号。

data = """{
"fruit": "apple",
"vegetable": "cabbage"
}"""
data = json.loads(data)
print(data, type(data))

返回:

{'fruit': 'apple', 'vegetable': 'cabbage'}

补充:关于json.dumps(dict)和json.loads(str)函数总是记反,所以想了一个记忆方法。

首先我们先来看json.dumps(dict)函数,是指将dict,也就是字典类型的数据结构转换为json数据格式,也就是字符串。

下面举例说明:

import json

dict1={
    "usr":"admin",
    "pdw":"123456",
}
print("****************使用json.dumps函数之前的dict1和使用函数后的类型*****************")
print(dict1)
print("dict1的数据类型是:",type(dict1))
json1=json.dumps(dict1)
print("使用json.dumps函数后的json1的输出如下")
print(json1)
print("使用json.dumps函数后的类型是",type(json1))

代码的运行结果

接下来我们再看json.loads(str)是将json格式转化为dict也就是字典格式。

话不多说,上例子,接上面代码而写的

print("****************使用json.loads函数之前的str1和使用函数后的类型*****************")
dict2=json.loads(json1)
print(dict2)
print(type(dict2))

代码运行结果

通过例子我们已经知道了json.dumps()的来龙去脉,那么如果快速的记住呢,以前我总是把json.dumps()和json.loads()记反了,突然间找到了一个巧记的方法,那就是json.dumps(dict)是把字典格式的转换成json格式,也就括号里是字典,最后返回的是json,而函数名是dumps,可以注意到,dumps的首字母和字典dict的首字母都是d所以这样就可以记住dumps是将dict转换成json格式,那另一个loads也就是反之,将json转换成字典格式。

总结 

到此这篇关于python中json.dumps()和json.loads()用法的文章就介绍到这了,更多相关python json.dumps()  json.loads()用法内容请搜索编程笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程笔记!


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍 Go+ 编程语言中的上下文处理机制,涵盖其基本概念、关键方法及应用场景。Go+ 是一门结合了 Go 的高效工程开发特性和 Python 数据科学功能的编程语言。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
author-avatar
zjjj-jz政
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有