将嵌套 JSON 负载映射到 Elixir 中的结构

2024-01-03

我正在尝试将 Golang 教程 gddit 移植到 Elixir。我已经使用 Dartlang 成功做到了这一点,但 Elixir 在地图和列表上的操作让我感到困惑。

使用 HTTPoison 和 JSEX,我有以下代码:

defmodule Redditex do
  use HTTPoison.Base

  def process_url(url) do
    "http://www.reddit.com/r/#{url}.json"
  end

  def process_response_body(body) do
    json = JSEX.decode! body
    json = Enum.map json, fn ({k, v}) -> {String.to_atom(k), v } end
    json
  end
end

我的困难是将 JSON 主体解析为适当的结构,其中 JSON 包含嵌套数据。 Jazz 有一些映射到结构的暗示,但没有提及嵌套数据。

在 Elixir 中是否有类似于 Go 用法的示例或常见做法来解码 JSON:

type Response struct {
Data struct {
    Children []struct {
        Data Item
    }
  }
}

type Item struct {
   Title    string
   URL      string
   Comments int `json:"num_comments"`  #mapping to another field label
}

使用 Poison JSON 库,我能够部分地处理嵌套:

def handle_response(%{status_code: 200, body: body}) do
    json = Poison.decode!(body, as: %{"data" => %{"children" => [%{"data" => Redditex.Item}]}})
    items = Enum.map( json["data"]["children"], fn (x) -> x["data"] end )
end

需要进行枚举来删除匿名结构,并且字段名称的重新映射尚未显示为本机解决方案。尽管如此,仍有一条前进的工作道路。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将嵌套 JSON 负载映射到 Elixir 中的结构 的相关文章

  • 如何向我的 Spring MVC REST 服务添加错误?

    如果用户没有输入我正在编码的两个名称 我如何更改 更新来自 Spring MVC 的以下 REST 调用以返回错误 未找到 RequestMapping value name method RequestMethod GET Respons
  • 如何在具有现有记录的 json 数据表顶部添加新行

    我试图在数据表顶部添加一行 显示 金额 列的总和 我正在使用 json 数据表 jquery 插件 列表来显示数据表 如何将此行与现有行一起添加到数据表顶部 我认为这段代码会对你有所帮助 var json uid user123 first
  • 如何轻松地将 Ajax、perl 和 JSON 结合使用?

    我正在尝试使用 Ajax 制作一个网页 Example 我创建了一个 Perl CGU 文件来触发一个简单的帖子 文件 test cgi name 托马斯 回复短信 你的名字是托马斯 我创建了一个可以使用该帖子的 html 文件 但随后页面
  • 优化数据可视化 Web 应用程序的性能

    我正在重写 3 年前编写的数据可视化网络工具 从那时起 浏览器的 JavaScript 引擎变得更快 所以我正在考虑将部分工作从服务器转移到客户端 在页面上 数据在表格和地图 或图表 中可视化 它使用相同的数据 但以不同的方式 因此准备显示
  • 如何使用 Retrofit 解析嵌套 json....?

    我不知道该怎么办使用 Retrofit 解析 json 熟悉使用 Retrofit 解析简单的 json 但不熟悉解析嵌套Json using Retrofit 这是我的 Json 数据 current observation image
  • 如何在 Elixir 中截断字符串?

    我正在使用长生不老药的鼻涕虫 想法是 我有一个字符串 a zA Z0 9 用连字符分隔的单词 喜欢 string another long string to be truncated and much text here 我想确保最大字符
  • 从 json 数组获取值并执行 sql 插入

    这是我的数组 json 1 Device ID a9a3346be4375a92 Date 2012 05 31 Time 15 22 59 Latitude 51 4972912 Longitude 0 1108178 2 Device
  • 有没有办法在 jqgrid treeGrid url 请求中传回附加数据?

    i am 使用 jqgrid 树视图 http www trirand com jqgridwiki doku php id wiki 3atreegrid我正在传回 json 响应 效果很好 我想将一些有关请求的附加信息传递回 GUI 并
  • Mandrill 验证错误

    很高兴能在 StackOverflow 上提出我的第一个问题 多年来我一直依靠它自学了很多东西 我的问题是这样的 尝试通过 Mandrill 的 API 发送邮件时出现以下错误 status error code 1 name Valida
  • 意外的令牌:尝试解析 JSON 字符串时

    我正在尝试解析这个 JSON 字符串 RESULTS name Thessaloniki GR type Sailing l sailing weather beach Porto 20Carras 20Marina 45904 name
  • 如何在 Serde 中(反)序列化强类型 JSON 字典?

    我正在编写一个 Rust 应用程序 它使用公共接口处理来自 TypeScript 客户端的 JSON 消息 我写了一些代码使用serde derive它运行良好 但我不知道如何实现字典 例如 foo data 42 bar data 133
  • 在 swift 中将简单字符串转换为 JSON 字符串

    我知道有一个同标题的问题here https stackoverflow com questions 30825755 convert string to json string in swift 但在那个问题中 他试图将字典转换为 JSO
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • C# Newtonsoft 反序列化 JSON 数组

    我正在尝试使用 Newtonsoft 反序列化数组 以便我可以在列表框中显示来自基于云的服务器的文件 但无论我尝试什么 我总是会收到此错误 Newtonsoft Json JsonReaderException 解析值时遇到意外字符 路径
  • 使用python将json和文件发送到flask

    我遇到这个问题 我试图在单个函数中向 Flask API 发送 接收一些文件和 JSON 在我的客户端 发件人 上我有 my json to be sent datas var1 var1 var2 var2 my file to be s
  • 使用 NewtonSoft 在一行中生成 JSON 对象

    我正在使用 JSON 库牛顿软件 http nuget org packages newtonsoft json生成 JSON 字符串 JObject out JObject FromObject new typ photos return
  • 全局传递 xhr onload 函数的值

    在我正在创建的应用程序中 我有以下 XMLHttpRequest 并且我正在尝试传递结果data在 的里面xhr onload 到在同一父函数中创建的数组中 var url http api soundcloud com resolve j
  • 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

    我正在解析一个大约 6500 行的 YAML 文件 格式如下 foo1 bar1 blah name john age 123 metadata whatever1 whatever whatever2 whatever stuff thi
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • 创建新的保护子句

    在 Elixir 中 我将如何为函数创建新的保护子句 显然 我已经看到你不能只调用 a 中的任何函数when声明 但如果能够做这样的事情那就太好了 defmodule Player do def play card player do de

随机推荐

  • 我可以在输入字段上使用 :before 或 :after 伪元素吗?

    我正在尝试使用 afterCSS 伪元素input字段 但它不起作用 如果我将它与span 工作正常 这有效 将笑脸放在 buu 之后和 更多 之前 span class mystyle buuu span a some more 这是行不
  • JfreeChart:将动态日期时间值转换为 XY 图表

    我正在使用 JfreeChart 创建动态图表 目前 我面临创建图表以显示数据库中的动态日期时间值的问题 显示上图 我想将 Y 轴固定为 JAN 到 Dec 的月份 很久以来一直在尝试 但我找不到任何解决方案 请给我解决上述问题的解决方案
  • 在struts 2中将可变数量的参数从表单传递到动作

    我在应用程序中使用 struts2 并在 jsp 中有一个表单 该表单提交给操作类 表单中输入字段的数量在运行时可能会发生变化 因此操作类不能具有固定的参数 setter 和 getter 我试图在单个操作类中捕获这些可变数量的输入 我想知
  • Swing GUI 未更新

    我有一个简单的 Java Swing 应用程序 它使用 zip4j 来加密和解压 zip 文件 这是通过这部分代码完成的 ZipFile zipFile new ZipFile dataStorage zip zipFile setPass
  • flutter中的底部导航栏设计在单击时展开图标

    I need a navigation bar on which I can expand an icon when it s clicked in FlutterBottom Navigation bar design image htt
  • C# 3.0 (2009) 中的 C# 可选属性

    我想知道 C 是否支持如下可选属性 public class Person public string Name get set public optional string NickName get set many more prope
  • 如何使用 window.open() 显示窗口标题?

    我想使用以下命令打开一个新窗口 window open
  • Java代理认证

    我有一个在 Tomcat 6 中运行的 Java Web 应用程序 它从远程 URL 加载 RSS 提要 I use Rome http java net projects rome 为我处理 RSS 提要和不同的格式 连接部分如下所示 t
  • 在 Blazor 页面内渲染 React 组件

    是否可以在 Blazor 页面内呈现 React 组件 我尝试向 Blazor 页面添加脚本标签 但 Blazor 不允许添加脚本标签 感谢你的回答 是否可以在 Blazor 页面内呈现 React 组件 是的 这是可能的 React 是一
  • 使用 JavaScript 处理刷新页面事件

    是否可以使用JavaScript来处理刷新页面的事件 我想要的是 如果用户做出以下行为之一 我会收到通知 refresh page by pressing F5 关闭选项卡或浏览器 输入新网址 然后按 Enter 键 浏览器 显示警告消息
  • clojure cons 与带有惰性序列的 conj

    为什么 cons 在这种情况下可以与lazy seq配合使用 但 conj 却不能 这有效 defn compound interest p i cons p lazy seq compound interest p 1 i i 这不会 它
  • 如何将 HTML 字符串渲染为真正的 HTML?

    这是我尝试过的以及它是如何出错的 这有效 div Hi there gt 这不会 div div description 属性只是一个普通的 HTML 内容字符串 然而 由于某种原因 它被呈现为字符串 而不是 HTML 有什么建议么 Is
  • 如何在Node.js中请求图像并输出图像

    我尝试获取图像并显示在网址上 我用request https github com request request module 例如我想获取图像https www google com images srpr logo11w png 并显
  • 如何降低 Sphinx4 应用程序中的噪音

    我对 sphinx4 和语音识别很陌生 我正在使用 sphinx4 创建语音应用程序 问题是噪声 即使用户没有语音输入 它也会导致程序识别 即即使用户没有语音输入 程序也会将语音转换为文本 从而影响准确性 主要问题是如何实现降噪 这是因为即
  • 如何在 Tomcat 7 中以编程方式检索登录配置?

    在 Tomcat 7 上 我设置了一个领域来让容器管理身份验证过程 我还设置了 web xml 与相应的
  • 如何修复超过 maxWarmingSearchers 的限制?

    任何人都知道为什么以及如何解决这个问题 因为我同时有非常繁忙的更新和搜索 打开新搜索器时出错 超出 maxWarmingSearchers 2 的限制 请稍后再试 根据Solr 常见问题解答 超出 maxWarmingSearchers X
  • TitledBorder 标题更新/刷新延迟,为什么?

    我有一个JPanelA 内有标题边框JPanel B of a JTabbedPanelC 我有一个刷新A和B内容的方法 它会不时被调用 不幸的是 A 和 B 的所有项目都及时刷新 但 A 的标题没有刷新 我明确必须切换到另一个选项卡式面板
  • 反序列化 XML Rest WebApi 调用?

    我一直在关注一些在线示例 但由于某种原因我无法成功反序列化以下 XML 文档
  • 嵌入时间线的动态时间线选择 - 标签时间线

    我已按照指南进行操作here https dev twitter com discussions 18411使用相同的小部件 ID 添加多个小部件 这对于用户时间线来说效果非常好 片段 a class twitter timeline hr
  • 将嵌套 JSON 负载映射到 Elixir 中的结构

    我正在尝试将 Golang 教程 gddit 移植到 Elixir 我已经使用 Dartlang 成功做到了这一点 但 Elixir 在地图和列表上的操作让我感到困惑 使用 HTTPoison 和 JSEX 我有以下代码 defmodule