Python中的json对象与string相互转换教程

 更新时间:2022年11月30日 10:52:31   作者:Python热爱者  
python里有json这个库,但并没有json这个类,所以所谓的json对象本质上就是一个dict;而json这个库,用于实现dict到string、string到dict的互转,这篇文章主要介绍了Python中的json对象与string相互转换教程,需要的朋友可以参考下

首先要明确,python里有json这个库,但并没有json这个类,所以所谓的json对象本质上就是一个dict;而json这个库,用于实现dict到string、string到dict的互转。

更具体一点,json对象(dict)转string用json.dumps(),string转json对象(dict)用json.loads()。(另外dump()是json输出到文件,load()是从文件载入成json。)

对于哪个转哪个用哪个常弄混的问题,可以这么理解:以json为参照点,loads是向载入的动作靠向json所以是string转成json对象,所以dumps是从取出的动作远离json所以是json对象转成string。

一、json对象(dict)转string

1 简单地直接转换----使用json.dumps()

import json

# 变量为dict类型,亦即所谓的json对象
json_dict = {
    "username": "root",
    "password": "toor"
}

# 变量为str类形,json对象转成的字符串
# 值为'{"username": "root", "password": "toor"}'
json_str = json.dumps(json_dict)

# 注意如果将json_dict和json_str都使用print()直接打印出来,看不出什么区别,因为字符串类型变量print出来后最外层的引号会被脱掉
# 唯一的区别是,打印出来的json_dict键值都使用单引号,而json_str内层使用双引号,外层使用单引号

2 更美观地输出

json对象或者说是dict类型变量是可以直接使用print()函数打印的,但只是那种所有key-value都打印在一行的形式。使用json.dumps()我们可以使用输出成缩进形式。

import json

# 变量为dict类型,亦即所谓的json对象
json_dict = {
    "username": "root",
    "password": "toor"
}

# 变量为str类形,json对象转成的字符串
# 值为'{"username": "root", "password": "toor"}'
# json_str = json.dumps(json_dict)

# indent是缩进空格数,这里4表示使用4空格缩进
# 值为'{\n    "username": "root",    \n"password": "toor"\n}'
json_str = json.dumps(json_dict, indent=4)
print(json_str)

# 也可以直接使用json.dump()写到文件
# with open("test.txt", "r", encoding="utf-8") as fd:
#     json.dump(json_dict, fd, indent=4)

# logging模块也可以这样转换再打印实现缩进效果
# json_str = json.dumps(json_dict, indent=4)
# logging.info(json_str)

二、string转json对象(dict)

常规的string----指最外层是单引号,内层键值是双引号,且最后一对键值之后没有逗号的字符串。如’{“username”: “root”, “password”: “toor”}'。

特殊的string----指最外层是双引号,内层键值是单引号,或者最一对键值之后有逗号的字符串。如"{‘username’: ‘root’, ‘password’: ‘toor’}"或’{“username”: “root”, “password”: “toor”,}'。

如下图可以看到,对于特殊字符串如果强行使用json.loads()要将其转换成json对象,那最外层双引号或最后的逗号都会触发报错:ValueError: Expecting property name: line x column xx (char xx)

1 常规的string转json对象(dict)----使用json.loads()

import json

# 变量为str类形,待json对象的常规字符串
json_str = '{"username": "root", "password": "toor"}'
# Python学习交流群:711312441
# 变量为dict类型,亦即所谓的json对象
# {'username': 'root', 'password': 'toor'}
json_dict = json.loads(json_str)

2 特殊的string转json对象(dict)----使用ast.literal_eval()

import ast

# 变量为str类形,待json对象的特殊字符串
json_str = "{'username': 'root', 'password': 'toor'}"
# json_str = '{"username": "root", "password": "toor",}'
# json_str = "{'username': 'root', 'password': 'toor',}"

# 变量为dict类型,亦即所谓的json对象
# {'username': 'root', 'password': 'toor'}
json_dict = ast.literal_eval(json_str)

到此这篇关于Python中的json对象与string相互转换教程的文章就介绍到这了,更多相关python json对象与string转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python读取一个目录下所有目录和文件的方法

    Python读取一个目录下所有目录和文件的方法

    这篇文章主要介绍了Python读取一个目录下所有目录和文件的方法,涉及Python针对目录和文件的遍历与运算操作相关技巧,需要的朋友可以参考下
    2016-07-07
  • Python依赖包迁移到断网环境操作

    Python依赖包迁移到断网环境操作

    这篇文章主要介绍了Python依赖包迁移到断网环境操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 谈谈Python中的while循环语句

    谈谈Python中的while循环语句

    这篇文章主要给大家介绍了关于Python中while循环语句的相关资料,使用while循环语句可以解决程序中需要重复执行的操作,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2019-03-03
  • python使用JSON模块进行数据处理(编码解码)

    python使用JSON模块进行数据处理(编码解码)

    这篇文章主要为大家介绍了python使用JSON模块进行数据处理编码解码的使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 使用Python绘制实时的动态折线图

    使用Python绘制实时的动态折线图

    这篇文章主要为大家详细介绍了如何使用Python绘制实时的动态折线图,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • 对python内置map和six.moves.map的区别详解

    对python内置map和six.moves.map的区别详解

    今天小编就为大家分享一篇对python内置map和six.moves.map的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python实现链表反转与合并操作详解

    Python实现链表反转与合并操作详解

    这篇文章主要为大家详细介绍了 Python 中反转链表和合并链表的应用场景及实现方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-02-02
  • 如何使用python读取Excel指定范围并转为数组

    如何使用python读取Excel指定范围并转为数组

    python处理数据文件的途径有很多种,下面这篇文章主要给大家介绍了关于如何使用python读取Excel指定范围并转为数组的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • Django框架基础模板标签与filter使用方法详解

    Django框架基础模板标签与filter使用方法详解

    这篇文章主要介绍了Django框架基础模板标签与filter使用方法,简单分析了Django模板基本语法、函数与自定义filter相关使用技巧,需要的朋友可以参考下
    2019-07-07
  • Python matplotlib包和gif包生成gif动画实战对比

    Python matplotlib包和gif包生成gif动画实战对比

    使用matplotlib生成gif动画的方法相信大家应该都看到过,下面这篇文章主要给大家介绍了关于Python matplotlib包和gif包生成gif动画对比的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05

最新评论