gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:30:34 24 4
gpt4 key购买 nike

我正在尝试将 Golang 教程 geddit 移植到 Elixir。我已经成功地使用 Dartlang,但 Elixir 在 map 和列表上的操作让我感到困惑。

使用 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 有一些暗示映射到结构而不是嵌套数据。

有没有类似 Go 的用法在 Elixir 中解码 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

枚举对于删除匿名结构是必要的,并且字段名称的重新映射并未显示为 native 解决方案。尽管如此,还是有一条前进的道路。

关于json - 将嵌套的 JSON 负载映射到 Elixir 中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25142735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com