问题标签 [elixir-poison]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
864 浏览

elixir - 使用 Poison 编码 Ecto 模型:{:invalid, {nil, "votes"}}

我想编码两个模型,定义如下:

web/models/vote.ex

web/models/availability.ex

如果我Poison.encode在脚本中使用并通过 iex 执行它,它可以正常工作:

但是,当我在控制器中执行完全相同的操作时,它会出现错误{:invalid, {nil, "posts"}}。我真的无法理解有什么区别。以下是控制器的相关操作:

注意:我没有使用 Poison 2.1.0,而是 1.5.2 版,因为 Ecto 锁定了它。

0 投票
1 回答
291 浏览

elixir - 为什么凤凰控制器返回一个无法识别为JSON的json

我正在尝试用新的 phoenix 替换旧的 rails 应用程序。我正在发送 ajax 请求,我试图通过 jQuery 自动识别为 JSON。问题是rails返回这个内容:

而我的凤凰应用程序返回这个:

所以我需要运行JSON.parse将此内容识别为 json 对象。我能做些什么来实现它自动解析?

我的凤凰代码:

0 投票
1 回答
1142 浏览

elixir - 使用 Poison 将地图编码为 json 时排序键

出于阅读目的,我想在 json 文件中有一个特定的键顺序。

我知道 map 的键没有任何顺序,所以我们不应该依赖它,但是由于 Poison 无法编码 proplists,我不知道该怎么做。

我想要的结果是:

为了用 Poison 实现这一点,我应该使用哪种结构?

0 投票
1 回答
1984 浏览

json - Elixir 将 JSON 列表解码为结构体

我正在使用 Elixir 从外部 API 检索 json 并将其存储在 Postgresql 数据库中。我正在使用 Poison 将 json 解码为 Elixir Ecto (2.0) 模式。它运行良好,除了一个方面:json 的一个元素是一个没有任何键的 List。我不知道如何将此元素映射到 Elixir 结构。

json:

此 json 采用结构(人)的形式,具有嵌入式结构(地址)和嵌入式列表(兴趣)。我想用 Ecto.Schemas 对这个结构进行建模,以便将 json 加载到其中。person 和 address 结构很简单:

我可以使用 Poison.decode 来加载这些结构:

但是,我如何建模和存储“兴趣”:来自 json?它只是一个没有任何键的简单单值列表。我可以把它变成一张地图,然后我可以用 Ecto.Schema 建模吗?有没有人遇到过这样的问题?

任何指导将不胜感激!

0 投票
1 回答
229 浏览

elixir - 处理 HTTPoison 调用时的 case 语句

我正在尝试对返回多个项目或单个项目的 API 调用使用相同的 HTTPoison 调用。多个项目的响应将它们放入“项目”属性中,而单个项目仅将项目信息作为 JSON 字符串返回。

这是我的代码:

在 process_response_body 中,如何让它检查 JSON 响应中的 items 属性,如果它不存在,则以不同的方式处理它?

0 投票
1 回答
513 浏览

decimal - 依赖项目中的重复协议实现

我在 Elixir 项目中合并协议实现时遇到问题。更具体地说,我使用Ecto了一些名为Gold(atm 无关紧要)的简单项目。问题是,它们(EctoGold)都Poison用于序列化Decimals(并实现正确的协议)。

的实现Ecto看起来有点像这样:

在开发过程中,有一条警告说模块重复:

但是当我尝试使用例如exrm构建一个版本时,我会收到错误消息说我有duplicate_modules

我应该如何处理?这里的情况是我实际上使用了我自己的版本Gold,所以我可以篡改它以尽快修复它。我知道我可以将其添加EctoGold依赖项,但是仅实现一个这样的协议似乎有点过头了。是不是有某种宏来检查模块是否已经实现?

0 投票
0 回答
242 浏览

paypal - 如何在长生不老药中更新贝宝的计费计划

我正在尝试向 api 发送请求以更新 paypal Rest Api 的计费计划。

API 链接:https ://developer.paypal.com/docs/api/payments.billing-plans#plan_update

请求方法是:

但是响应给了我格式问题的错误。

我的请求有什么问题?

0 投票
1 回答
1405 浏览

elixir - 如何在 Ecto Poison 编码中排除嵌套模型

我有一个简单的模型(短版):

我希望在尝试对模型进行编码时@derive排除:company关联,但似乎没有。使用 Guardian 序列化程序时会发生这种情况:

我实际上不确定会发生什么

def for_token(user = %User{}), do: { :ok, "User:#{user.id}" }

据我了解user = %User{},试图测试作为参数给出的对象是否是有效的User变更集,对吗?

但我得到了这个错误:

无法将关联 :company 从 MyApp.User 编码为 JSON,因为未加载关联。请确保您已预加载关联或将其从要编码的数据中删除

我不想预加载它,因为它需要更多的依赖来编码,这也不起作用,我宁愿忽略它。

为什么only参数@derive不起作用,我该如何解决这个问题?

0 投票
1 回答
9141 浏览

elixir - 使用 Poison 将映射编码为 JSON 以与 Slack 一起使用

我正在使用 Poison 将地图编码为 JSON,然后将其发送到 Slack API。这是毒药给我的:

当我将它放入 JSON lint 时,它说它是有效的 JSON,但 Slack 响应“无效负载”。

如果我将 JSON 更改为如下所示

然后它工作。有谁知道我哪里错了?我是否需要对编码的 JSON 进行额外处理,还是需要设置一些标头?

这是我的控制器

这是用于发送消息的库的一部分

还有我的 HTTPoison 处理

创建 JSON 的部分位于最后一个块中。

0 投票
2 回答
886 浏览

elixir - 毒药:当 json 值可能是对象或对象列表时如何解码为结构

我正在尝试使用 Poison 解码以下 json 字符串

执行 afetch(1) |> decode_response是行不通的,尽管它是严格限制为 1 的参数。

我确实有以下错误

我的功能如下:

然后我认为参数等于1,函数应该是

我终于认为在我的 fetch 函数给出的字符串中计算元组并使用守卫来选择要使用的 decode_response 是一个好主意,但我不知道如何。

有人可以指出我正确的方向吗?

问候,

皮埃尔