Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
elixir毒药数据类型解析Json数据_Json_Elixir - Fatal编程技术网

elixir毒药数据类型解析Json数据

elixir毒药数据类型解析Json数据,json,elixir,Json,Elixir,我是长生不老药的新手,很抱歉,我相信这很简单 我可以找到关于遵循以下模式的数据类型的任何信息: %{“带引号的字符串”=>“带引号的字符串”} 那叫什么 这是我的问题。我用的是高压毒药和毒药。我调用一个Get请求并成功地获得一个JSON响应,然后将整个响应传递给毒药。然后我会根据药水给我的配型。我试图达到我可以说body.address的程度,但是我得到了一个错误 以下是相关代码: # after call ... body |> Poison.decode! |> case do

我是长生不老药的新手,很抱歉,我相信这很简单

我可以找到关于遵循以下模式的数据类型的任何信息:

%{“带引号的字符串”=>“带引号的字符串”}

那叫什么

这是我的问题。我用的是高压毒药和毒药。我调用一个Get请求并成功地获得一个JSON响应,然后将整个响应传递给毒药。然后我会根据药水给我的配型。我试图达到我可以说body.address的程度,但是我得到了一个错误

以下是相关代码:

# after call
...
body
|> Poison.decode!
|> case do
  {:ok, %HTTPoison.Response{body: body}} ->
    IO.puts "response received"
    body.address
...
然后它打印这个:

。。。收到的答复 **(KeyError)键:在以下位置找不到地址:%%{“address”=>“123”,“public”=>“abc”}

所以我想我真正的问题是我该如何转身

%{“地址”=>“123”,“公共”=>“abc”}

进入

%{:address=>“123”,:public=>“abc”}

这样我就可以成功地使用它:

body.address

是这样吗?

修改了代码:

    |> Poison.decode!(keys: :atoms!)

这告诉毒药我希望钥匙是原子。

修改了代码,这样说:

    |> Poison.decode!(keys: :atoms!)

这告诉毒药我想要钥匙作为原子。

这是一张带有二进制钥匙的地图

body.address
是访问映射中原子键的缩写。但是,如果钥匙不存在,它将不起作用。最好使用
body[:address]
,如果地图没有键,它将返回nil


对于二进制键,可以使用
body[“address”]
访问结构。或者,您可以使用
Map.get(body,“address”)
这是一个带有二进制键的映射

body.address
是访问映射中原子键的缩写。但是,如果钥匙不存在,它将不起作用。最好使用
body[:address]
,如果地图没有键,它将返回nil


对于二进制键,可以使用
body[“address”]
访问结构。或者,您可以使用
Map.get(body,“address”)

我将在这里留下我的答案,因为我解释了模式以及失败的原因。我不建议使用
符号访问映射,除非您希望它在密钥不存在时引发异常。我将在这里留下我的答案,因为我解释了模式以及失败的原因。我不建议使用
符号访问地图,除非您希望它在密钥不存在时引发异常。感谢提供此信息,它也帮助我解决了相关问题!我能够删除
(keys::atoms!)
并使用
body[“address”]
来调用它。感谢这些信息,它也帮助我解决了一个相关问题!我能够删除
(keys::atoms!)
并使用
body[“address”]
调用它。将字符串从internet转换为atoms是个坏主意。原子不是垃圾收集的。因此,使用您在下面发现的
body[“address”]
方法。但是,要回答您的问题,
Enum.map(params,fn{key,value}->{String.to_atom(key,value}end)|>Enum.into(%{})
。但是不要这样做:)把互联网上的字符串转换成原子是个坏主意。原子不是垃圾收集的。因此,使用您在下面发现的
body[“address”]
方法。但是,要回答您的问题,
Enum.map(params,fn{key,value}->{String.to_atom(key,value}end)|>Enum.into(%{})
。但不要这样做:)