📅  最后修改于: 2020-09-06 09:14:05             🧑  作者: Mango
本小节,我们继续学习Json模块中jump/jumps的使用,主要以实例为主。对上一章节还有疑惑的伙伴们,请移步
https://www.imangodoc.com/4376.html
我们继续学习将任何Python基本类型(例如字典,列表,集合,元组,字符串,数字)转换为JSON格式的数据。
import json
sampleDict = {
"colorList": ["Red", "Green", "Blue"],
"carTuple": ("BMW", "Audi", "range rover"),
"sampleString": "imango.com",
"sampleInteger": 457,
"sampleFloat": 225.48,
"booleantrue": True,
"booleanfalse": False,
"nonevalue": None
}
print("Converting Python primitive types into JSON")
resultJSON = json.dumps(sampleDict)
print("Done converting Python primitive types into JSON")
print(resultJSON)
输出如下:
Converting Python primitive types into JSON
Done converting Python primitive types into JSON
{“ colorList":[“ Red",“ Green",“ Blue"],“ carTuple":[“ BMW",“ Audi",“ range rover"] ,“ sampleString":“imango.com",“ sampleInteger":457,“ sampleFloat":225.48,“ booleantrue":true,“ booleanfalse":false,“ nonevalue":null}
Json.dumps()的使用告一段落。
我们可以在以下情况下使用它。
import json
# assume you have the following dictionary
developer = {
"name": "jane doe",
"salary": 9000,
"email": "imango@qq.com"
}
print("Started writing JSON data into a file")
with open("./demo.json", "w") as write_file:
json.dump(developer, write_file) # encode dict into JSON
print("Done writing JSON data into .json file")
成功执行后,将在本地生成Json文件,你可以在本地查看。×××××××看起来不是很优雅×××××××
如果用户想读取JSON文件,那么它必须可读性强且组织良好,因此无论谁消耗它,都将对数据结构有更好的了解。dump()方法提供以下参数来漂亮地打印JSON数据。
sort_keys
通过按键JSON数据进行排序。
import json
developer = {
"name": "Jakin",
"salary": 9000,
"skills": ["Raspberry pi", "Machine Learning", "Web Development"],
"email": "imango@qq.com"
}
with open("./prettyDemo.json", "w") as write_file:
json.dump(developer, write_file, indent=4, separators=(", ", ": "), sort_keys=True)
print("Done writing pretty printed JSON data into a file")
成功运行后,见证奇迹的时刻。
果您不是在读取文件,而是只需要将JSON数据写入文件以供基础系统或应用程序使用,则可以通过执行紧凑编码将JSON数据写入文件。
我们可以通过更改JSON键值分隔符将JSON数据写入文件。您可以根据需要更改JSON表示形式。使用方法的分隔符参数,json.dump()
可以指定键和值之间的任何分隔符。
为了限制JSON文件的大小,我们可以删除JSON键值之间的多余间距。我决定进行紧凑编码(separators=(',', ':')
)。使用此分隔符,我们可以从JSON删除空格,以使JSON更加紧凑,并节省通过HTTP发送的字节。现在,让我们看一个例子。
import json
developer_dict = {
"name": "imango",
"salary": 9000,
"skills": ["Raspberry pi", "Machine Learning", "Web Development"],
"companies": ["Google", "Facebook", "IBM"],
"email": "imango@qq.com"
}
print("Started writing compact JSON data into a file")
with open("developerDetailCompact.json", "w") as write_file:
json.dump(developer_dict, write_file, separators=(',', ':'))
print("Done writing compact JSON data into json file")
skipkeys
参数将JSON写入文件时跳过非基本类型Python的内置json模块只能处理具有直接JSON等效项的Python原语类型(例如,字典,列表,字符串,int,None等)。
如果Python字典包含自定义Python对象作为键之一,并且如果我们尝试将其转换为JSON格式,则将收到TypeError,即Object of type "Your Class" is not JSON serializable
。
如果JSON数据中不需要此自定义对象,则可以使用skipkeys=true
json.dump()
方法的参数跳过它。
如果skipkeys=true
为True,则将dict
跳过不是基本类型的键(str,int,float,bool,None),而不是引发TypeError。
import json
class PersonalInfo:
def __init__(self, name, age):
self.name = name
self.age = age
def showInfo(self):
print("Developer name is " + self.name, "Age is ", self.age)
dev = PersonalInfo("John", 36)
developer_Dict = {
PersonalInfo: dev,
"salary": 9000,
"skills": ["Python", "Machine Learning", "Web Development"],
"email": "jane.doe@pynative.com"
}
print("Writing JSON data into file by skipping non-basic types")
with open("developer.json", "w") as write_file:
json.dump(developer_Dict, write_file, skipkeys=True)
print("Done")
在JSON输出中,该PersonalInfo
对象dev被跳过。
该json.dump()
方法具有 ensure_ascii
参数。的 ensure_ascii
是默认的事实。确保输出的所有输入非ASCII字符都已转义。如果 ensure_ascii
为false,则这些字符将原样输出。如果要存储非ASCII字符,请按原样使用以下代码。
import json
unicode_string = u"\u00f8"
print("unicode String is ", unicode_string)
# set ensure_ascii=False
print("JSON character encoding by setting ensure_ascii=False")
print(json.dumps(unicode_string, ensure_ascii=False))
——->>>>> 感谢阅读和对我们的支持