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,如果我有一个JSON对象,其中一个键的值是一个整数数组,而数组的每个整数恰好对应于一个的代码点,那么有没有办法让Elixir将数组解释为一个简单的整数列表而不是字符列表 我使用了三种不同的Elixir JSON解析器试图获取返回的整数列表,但它们都返回列表的字符表示: : : : 我想要的只是%{“foo”=>[35,35]}。这是可能的,还是我遗漏了什么?如果不可能,我应该如何将这个值从JSON解码为Elixir,然后如何将其编码回JSON数组,以将JSON发送到其他外部系统 编辑 多亏了’s

如果我有一个JSON对象,其中一个键的值是一个整数数组,而数组的每个整数恰好对应于一个的代码点,那么有没有办法让Elixir将数组解释为一个简单的整数列表而不是字符列表

我使用了三种不同的Elixir JSON解析器试图获取返回的整数列表,但它们都返回列表的字符表示:

:

:

:

我想要的只是
%{“foo”=>[35,35]}
。这是可能的,还是我遗漏了什么?如果不可能,我应该如何将这个值从JSON解码为Elixir,然后如何将其编码回JSON数组,以将JSON发送到其他外部系统

编辑

多亏了’s,我想有些东西被点击了,然后经过进一步的调查,我意识到在Elixir中解析JSON整数数组时真的没有什么好担心的:

iex> json = Poison.decode!(~s({ "foo": [35, 35] }))
%{"foo" => '##'}
iex> Poison.encode!(json)
"{\"foo\":[35,35]}"

返回的结果非常精确
“##”
[35,35]
在长生不老药中是完全一样的。这只是表示相同值的另一种方式

iex> [35, 35] == '##'
true
iex> inspect [35, 35]
"'##'"
iex> inspect [35, 35], char_lists: :as_lists
"[35, 35]"
这一点一开始令人困惑,但背后有一个强有力的原因。大多数Erlang库使用字符列表(或字符列表)作为字符串,而不是二进制文件作为长生不老药。为了便于互操作性,如果列表仅包含可打印字符,则默认情况下,它将作为单引号字符串打印。但这并不会改变它背后的数据——它只是相同值的不同表示形式。

它是一个列表:

iex> [35, 35] == '##'
true
iex> inspect [35, 35]
"'##'"
iex> inspect [35, 35], char_lists: :as_lists
"[35, 35]"
iex(16)> '##' |> is_list
true
您可以对其执行常规列表操作:

iex(15)> '##' |> List.first
35

我想你回答的最后一句话终于在我脑海中闪现,所以非常感谢!
iex(16)> '##' |> is_list
true
iex(15)> '##' |> List.first
35