SON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于读取和写入,适用于人和机器。它建立在两个基本结构上:
- 一组 “名称 / 值” 对,在 GameMaker Studio 2 中称为 ds_map,但也称为 “字典” 或 “对象”。
- 一个有序的值列表,在 GameMaker Studio 2 中称为 ds_list,但这也可以称为 “数组” 或 “队列”。
使用此函数,你可以解码一段 JSON 并将其转换为 ds_map,准备在 GameMaker Studio 2 中使用。如果要解码的 JSON 需要在中心 ds_map 中使用列表和映射的层次结构,那么也会使用以下规则(注意,这些规则仅适用于顶级结构)对其进行解码并为你创建:
- Json 是单个值 - 返回带有单个条目 “default” 的 ds_map,该值是值
- Json 是一个对象或值的数组 - 返回一个带有单个条目 “default” 的 ds_map,它是对象或值的 ds_list
- Json 是一个对象 - 返回一个 ds_map,其中包含对象条目
注意:解码数组时,只有当数组是顶级结构时,才会有一个带 “default” 键的映射,并且仅适用于该顶级数组。 内部列表直接解码为 ds_lists,而不包含在 ds_map 中。
通常你会知道 JSON 解码的键,但如果没有,那么你可以使用 ds_map_size、ds_map_find_first 和 ds_map_find_next 函数来解析映射并获取必要的信息。注意:GameMaker Studio 2 从 JSON 创建必要的 ds_maps 和列表,并且为了清理你只需要删除 顶级 映射或列表,GameMaker Studio 2 将自动从内存中删除其下所有映射和列表。
json_decode(string)
参数 | 描述 |
---|---|
string | 要传递给函数进行解码的 JSON 格式字符串 |
ds_map id,如果失败则返回 -1
var resultMap = json_decode(requestResult);
var list = ds_map_find_value(resultMap, "default");
var size = ds_list_size(list);
for (var n = 0; n < ds_list_size(list); n++;)
{
var map = ds_list_find_value(list, n);
var curr = ds_map_find_first(map);
while (is_string(curr))
{
global.Name[n] = ds_map_find_value(map, "name");
curr = ds_map_find_next(map, curr);
}
}
ds_map_destroy(resultMap);
上面的代码将解码 JSON 字符串并解析它以生成全局数组。