Jason 解码两次以正确匹配模式
Jason decode twice to pattern match correctly
我对灵药真的很陌生,所以请原谅我的无知。我在 body
中有一个 json 响应(来自 public api),我需要解码两次才能真正获得可以进行模式匹配的地图。我不明白为什么会发生这种情况以及如何避免这种情况?谢谢
body = "\"{\\"access_token\\":\\"r5f3w73pjjjoembe4azhp892475wah\\",\\"expires_in\\":5102694,\\"token_type\\":\\"bearer\\"}\n\""
result = body |> Jason.decode! |> Jason.decode!
%{"access_token" => access_token} = result
编辑:Postman/Nodefetch 中的响应没问题,只是在 elixir 中来自 Tesla 客户端时就这样转义了。
正如我所想,我的无知是罪魁祸首。我不知道 inspect()
实际上是 Kernel.inspect()
(这实际上是有道理的)并且该函数输出修改后的输入表示以进行调试。我将它与 IO.inspect()
混淆了,后者 returns 是未更改的项目。所以我会留下这个问题,以防有人混淆它们。
我对灵药真的很陌生,所以请原谅我的无知。我在 body
中有一个 json 响应(来自 public api),我需要解码两次才能真正获得可以进行模式匹配的地图。我不明白为什么会发生这种情况以及如何避免这种情况?谢谢
body = "\"{\\"access_token\\":\\"r5f3w73pjjjoembe4azhp892475wah\\",\\"expires_in\\":5102694,\\"token_type\\":\\"bearer\\"}\n\""
result = body |> Jason.decode! |> Jason.decode!
%{"access_token" => access_token} = result
编辑:Postman/Nodefetch 中的响应没问题,只是在 elixir 中来自 Tesla 客户端时就这样转义了。
正如我所想,我的无知是罪魁祸首。我不知道 inspect()
实际上是 Kernel.inspect()
(这实际上是有道理的)并且该函数输出修改后的输入表示以进行调试。我将它与 IO.inspect()
混淆了,后者 returns 是未更改的项目。所以我会留下这个问题,以防有人混淆它们。