【发布时间】:2017-01-31 17:51:48
【问题描述】:
我正在将一个充满 erlang 对象的元组转换为我计划稍后转换为 JSON 的映射。
tileJSON 函数被一个 2 元素元组调用。我期望在地图中为每个 tableCache 元素看到一个包含瓦片的行列表。相反,我看到了这个:
#{"availableTablePids" => ["<0.477.0>"],
"hall" => [],
"tableCache" => [],
"tablePids" => ["<0.477.0>"]}
设置 tileJSON 以返回这样的元组:
tileJSON({Status, Sitter}) ->
{atomJSON(Status), atomJSON(Sitter)}.
我得到了这些数据:
#{"availableTablePids" => ["<0.477.0>"],
"hall" => [],
"tableCache" => [#{"actions" => #{"current" => "x","o" => #{"next" => 0,"now" => 0},"x" => #{"next" => 0,"now" => 2}},
"board" => [[{"spawn","x"},
{"empty","null"},
{"empty","null"},
{"empty","null"},
{"empty","null"}],
[{"empty","null"},
{"empty","null"},
{"empty","null"},
{"ridge","null"},
{"empty","null"}],
[{"empty","null"},
{"empty","null"},
{"ridge","null"},
{"empty","null"},
{"empty","null"}],
[{"empty","null"},
{"ridge","null"},
{"empty","null"},
{"empty","null"},
{"empty","null"}],
[{"empty","null"},
{"empty","null"},
{"empty","null"},
{"empty","null"},
{"spawn","o"}]],
"clock" => #{"current" => "x","o" => 3000,"status" => "unstarted","x" => 3000}}],
"tablePids" => ["<0.477.0>"]}
atomJSON(Atom) -> atom_to_list(Atom).
tileJSON({Status, Sitter}) ->
[atomJSON(Status), atomJSON(Sitter)].
rowJSON(Row) ->
lists:map(fun(Tile) -> tileJSON(Tile) end, Row).
boardJSON(Board) ->
lists:map(fun(Row) -> rowJSON(Row) end, Board).
tableCacheJSON(Cache) ->
lists:map(fun(#{actions := Actions, clock := Clock, board := Board}) ->
#{"actions" => actionsJSON(Actions),
"clock" => clockJSON(Clock),
"board" => boardJSON(Board)
}
end, Cache).
程序没有崩溃。我原来的 tileJSON 函数有什么问题?
【问题讨论】:
标签: erlang