📜  python json 1-1:使用json.dump/dumps将JSON写入文件/字符串

📅  最后修改于: 2020-09-06 09:09:22             🧑  作者: Mango

在该章节中,我们将学习如何使用Python将JSON格式的数据写入文件和字符串。

通过本章节的学习,希望我们能够有一些收获:

  • 了解如何将Python序列化的对象编码为JSON格式的数据;
  • 将JSON格式的数据编码并写入文件;
  • 将PrettyPrinted JSON数据写入文件;
  • 熟悉JSON json.dump()与json.dumps()使用;
  • 了解如何在JSON编码时跳过非基本类型;
  • 紧凑的编码以节省文件空间;
  • 编码JSON时处理非ASCII数据。

Json模块提供以下两种方法将Python对象编码为JSON格式,一种是编码为json格式的字符转,另一种则为json格式的文件。

  • json.dumps()方法任何Python对象编码为JSON格式的字符串
  • json.dump()方法用于Python序列化的对象作为JSON格式的数据写入文件。文件类型可以是任何文件,包括文本,JSON甚至二进制文件。

更形象的展示二者的区别。

Python和Json之间类型映射关系

要将Python对象编码为JSON等效json模块,可以参考以下转换表,jump.jumps函数会依据此转换表编码。

Python Json
dict object
list, tuple array
str string
nt, float, int & float-derived Enums number
True/False true/false
None numm

详解json.dump()和json.dumps()方法

1. json.dump()的语法

它用于将Python对象作为JSON格式的数据写入文件。

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

2. json.dumps()的语法

它用于将Python对象写入JSON字符串

json.dumps(obj,*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

3. 主要参数解析

  • obj 只是一个要转换为JSON格式的Python可序列化对象。
  • fp是用于将JSON格式的数据写入文件的文件指针。Python json模块始终生成字符串对象,而不是字节对象,因此fp.write()必须支持字符串输入。
  • 如果skipkeys为true(默认值:False),则将跳过不是基本类型的dict键(str,int,float,bool和None),而不是引发TypeError。例如,如果您的字典键之一是自定义Python对象,则在将字典转换为JSON时将省略该键。
  • 如果ensure_ascii为true(默认值),则保证输出中所有传入的非ASCII字符都转义了。如果ensure_ascii为false,则这些字符将原样输出。
  • allow_nan默认为True,因此将使用其JavaScript等效项(NaN,Infinity,-Infinity)。如果为False,则序列化超出范围的float值(nan,inf,-inf)将是ValueError。
  • 一个indent参数用于漂亮地打印JSON以使其更具可读性。默认值为(', ', ': ')。为了获得最紧凑的JSON表示形式,您应该使用(',', ':') 消除空格。
  • 如果sort_keys为true(默认值:False),则词典的输出将按键排序。

使用json.dumps()将Python Dict转换为JSON格式的字符串

在多种情况下,您需要在程序中使用序列化的JSON数据。如果您在应用程序中需要此序列化的JSON数据以进行进一步处理,则可以将其转换为本地Python str对象,而不是将其写入文件中。

例如,您收到一个HTTP请求以发送开发人员详细信息。您从数据库表中获取了开发人员数据并将其存储在Python字典或任何Python对象中,现在您需要将该数据发送回请求的应用程序,因此需要将Python字典对象转换为JSON格式的字符串以作为响应发送在JSON字符串中。为此,您需要使用json.dumps()

json.dumps()返回的Python字典的JSON字符串表示。现在来看示例。

将Python字典转换为JSON格式的字符串

import json

def SendJsonResponse(resultDict):
    print("Convert Python dictionary into JSON formatted String")
    developer_str = json.dumps(resultDict)
    print(developer_str)

# sample developer dict
developer_Dict = {
    "name": "Jane Doe",
    "salary": 9000,
    "skills": ["Python", "Machine Learning", "Web Development"],
    "email": "imango@qq.com"
}
SendJsonResponse(developer_Dict)

输出:

Convert Python dictionary into JSON formatted String
{“name":“ Jane Doe",“salary":9000,“skills":[“ Python",“Machine Learning",“Web Development"],“email":“imango@qq.com“}

—–>>>未完待续。。。。。