我正在尝试下面的代码
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)