【发布时间】:2018-10-23 17:04:49
【问题描述】:
我正在尝试下面的代码
data = Poison.decode!(payload)
|> ProperCase.to_snake_case
Logger.info("data is #{data}")
有效负载来自消息队列
{
"name":"Joe",
"id": "13",
"version": 0
}
这样我得到一个错误
[error] Could not process PerfectFlight: %Protocol.UndefinedError{description: "", protocol: String.Chars, value: %{"id" => "13", "name" => "Joe", "version" => 0}}
但是,如果我将输入 json 更改为
"{
\"name\":\"Joe\",
\"id\": \"13\",
\"version\": 0
}"
Poison.decode() 运行良好。现在的问题是我不想更改我的输入JSON,原因有很多。我错过了什么?
编辑:代码不是在解码失败,而是在下一行Logger.info("data is #{data}")。由于decode 函数的输出不是String,我宁愿使用 IO.inspect 如下。接受 Adams 对解码功能的信心的回答。
data = Poison.decode!(payload)
|> ProperCase.to_snake_case
IO.inspect(data)
【问题讨论】:
-
旁注: 使用以下术语开始管道:
payload |> Poison.decode!() |> ProperCase.to_snake_case()。
标签: json elixir decode elixir-poison