2016-07-05 50 views
2

我正在编写一些Elixir代码,它将发出HTTP POST请求,其中主体是选项的JSON文档。其中一个属性以@符号开头。在elixir中以@开头的映射关键字文字

不可能的:

json = %{ q: "foobar", @timestamp: 1234567890 } |> Poison.encode! 

什么是写一个地图键文字与@开始正确的方法是什么?

回答

6

如果你希望它被视为一个原子,你可以这样做:

%{ :q => "foobar", :"@timestamp" => 1234567890 } 

这也是正确的:

json = %{ :"@timestamp" => 1234567890, q: "foobar" } 

然而,这不是:

json = %{ q: "foobar", :"@timestamp" => 1234567890 } 
** (SyntaxError) iex:5: syntax error before: "@timestamp" 

你也可以使用字符串作为关键字:

json = %{ "@timestamp" => 1234567890, q: "foobar" } 
相关问题