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

作者:Python热爱者 时间:2022-11-08 04:38:58 

首先要明确,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)

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

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)

来源:https://blog.csdn.net/qdPython/article/details/128099724

标签:python,json对象,string,转换
0
投稿

猜你喜欢

  • pandas的Series类型与基本操作详解

    2021-03-23 12:06:36
  • Python字符串拼接的几种方法整理

    2021-05-08 18:55:47
  • 基于logstash实现日志文件同步elasticsearch

    2023-09-01 14:45:57
  • python3 发送任意文件邮件的实例

    2023-12-31 15:54:42
  • Django搭建项目实战与避坑细节详解

    2021-04-30 06:46:46
  • ASP 相关文章或者相关产品

    2011-03-30 11:12:00
  • Oracle PL/SQL入门案例实践

    2010-07-18 13:13:00
  • php 常用算法和时间复杂度

    2023-11-05 10:30:49
  • IIRF(Ionic's Isapi Rewrite Filt er)入门,在IIS上重写Url

    2007-09-23 12:16:00
  • Python-opencv实现红绿两色识别操作

    2021-05-04 18:35:51
  • SQL Server 2005数据库中表的递归查询

    2009-01-08 16:08:00
  • [翻译]标记语言和样式手册 Chapter 4 引用

    2008-01-20 14:19:00
  • python使用正则表达式的search()函数实现指定位置搜索功能

    2023-08-08 09:26:01
  • 交互设计:简单

    2011-08-27 16:46:27
  • djano一对一、多对多、分页实例代码

    2022-11-06 23:05:44
  • Pycharm激活方法及详细教程(详细且实用)

    2023-04-12 05:19:30
  • Python使用pyodbc访问数据库操作方法详解

    2021-08-02 19:12:29
  • 一个asp分页源代码例子

    2007-09-19 12:25:00
  • PyCharm使用最多也最常用默认快捷键分享

    2023-05-23 20:54:55
  • python学生管理系统开发

    2022-05-20 23:00:00
  • asp之家 网络编程 m.aspxhome.com