Я пытаюсь использовать код ниже
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, как показано ниже.Принятие ответа Адамса за его уверенность в функции декодирования.
data = Poison.decode!(payload)
|> ProperCase.to_snake_case
IO.inspect(data)