Coding for KidsCoding for Kids
创意关卡挑战教师指南
为功能投票
高级 Python 开发课程
第 章
>
第 级

序列化模块
JSON 模块

目标

前往服务站,确保通过使用 JSON 模块格式化文件将数据妥善存储。

在新建区域的附属建筑南侧有一个服务站,这个区域将被重新开发用于种植作物。该服务站拥有各种终端设备用于处理新开发的数据,我们可以手动编写数据,但那样会耗费大量时间。在处理数据的过程中,我们可以使用 JSON(JavaScript 对象表示法),这是一种与编程语言无关的数据格式,用于以易于阅读的方式存储和传输信息。

为了在 Python 中使用 JSON,我们可以使用 import json 来获得 JSON 函数的访问权限,在此我们将使用以下函数:

  • json.loads(): 将 JSON 字符串转换为 Python 数据,接受一个参数,即你希望解析成 Python 数据的字符串。
  • json.dumps(): 将 Python 数据转换为 JSON 字符串对象,该函数最多可接受四(4)个参数,其中只需第一个参数。它们如下:
    1. 希望转换为 JSON 的 Python 数据:类型可以是字典、列表、元组、字符串、整数、浮点数、布尔值和 None 数据类型。
    2. indent: 希望在数据点前添加的空格数
    3. separators: 希望在数据点之间和/或末尾出现的符号
    4. sort_keys: 如果转换的文件类型为字典,则按字母顺序对字典键进行排序。

首先,前往左侧前哨站的金色 X 标记,并面对带有备忘录的桌子。使用 read() 函数验证用于确认终端状态的信息并做好记录。然后走到终端前面的浅色 X 标记,那里有一个名为 transmission 的常量,使用 json.dumps() 将其格式化为 JSON,以便我们转换它,示例如下: transmission = json.dumps(transmission) .

创建一个名为 load 的字典,并用 transmission 常量作为参数将 json.loads() 的返回值存储进去。这样将 JSON 转换为 Python 数据后,其信息可以被轻松访问。使用 speak() 函数,并结合备忘录中列出的键和你创建的 load 字典。例如: player.speak(load["system"]) ,对所有键执行此操作。

检查完终端上的信息后,走向服务站,进入室内并朝着绿地毯上方的浅色 X 标记走去。使用 read() 函数查看备忘录,检查并记录下各项数值,在编辑器中有一个预先写好的字典 profile,用备忘录中的信息填写缺失的值。

走到绿地毯上方的深色 X 标记,面对终端,创建一个变量 transfer 并将 json.dumps() 的返回值存储进去,其唯一参数为 profile 字典。这样做会将字典转换为 JSON 字符串对象。使用预先写好的 display() 函数,并传入 transfer JSON,以便将数据存储在终端中。

走到红地毯上方的深色 X 标记,并使用 read() 函数验证终端中已输入的数据。数据的格式不正确,为了正确存储信息,需要将其存储并格式化为 JSON。数据存储在一个名为 red_data 的字典常量中,创建一个变量 red_storage 并将 json.dumps() 的返回值存储其中。

为了格式化数据,在函数中添加以下参数:添加 red_data 来将常量转换为 JSON,添加 indent 并将其设为 5 以格式化文本,添加 separators 并设为 ("- ", " = ") 以在每一行末尾添加这些符号。代码应如下所示: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")) . 使用预先写好的 display() 函数,并传入 red_storage JSON 字符串,以存储并显示格式化后的数据。

走到蓝地毯上方的深色 X 标记,面对终端并使用 read() 函数,同前面类似,数据未正确存储,需要格式化并且排序。数据存储在一个名为 blue_data 的常量中,创建一个变量 blue_storage 并将 json.dumps() 的返回值存储进去。

对于参数:添加 blue_data 来将常量转换为 JSON,添加 indent 并将其设为 4 以格式化文本,添加 separators 并设为 (".0", " = ") 以在每一行末尾添加这些符号。此外,还需在最后添加参数 sort_keys 并将其设为 True,如下所示: sort_keys=True . 使用预先写好的 display() 函数,并传入 blue_storage JSON 字符串,以存储并显示排序后的数据,从而完成这一关。

代码书