gpt4 book ai didi

json - 如何在 go 中构建抽象 json 解码器

转载 作者:行者123 更新时间:2023-12-02 18:30:38 26 4
gpt4 key购买 nike

我有多个 API,它们在高级响应上遵循类似的结构。它总是以这种形式返回答案:

{"data": {"feed":[{...}]}, "success": true}

但是,Feed 中的结构会有所不同,具体取决于具体的 API。

我现在想构建一个抽象函数来处理各种 API。我有以下对象:

type SourceDTO struct { // top level object
Success bool `json:"success"`
Data Feed `json:"data"`
}

type Feed struct {
FeedData []<???> `json:"Feed"`
}

(真实的对象更复杂,但这表明了想法)

如果没有一些通用代码和一些基于高级数据(例如成功)的逻辑,那么用 go 来解析不同 API 的好方法是什么呢?

编辑:我对此进行了扩展,以更多地解释我关于我正在寻找的“模式”的问题的扩展。

我想创建这个解析 API 组的包。然后必须将 DTO 对象转移到其他一些对象中。这些“最终”对象在不同的​​包(实体包)中定义,然后必须被持久化。
我现在想知道如何将所有这些整合在一起:“最终”实体对象、从 DTO 到实体的转换函数、不同 API 的解析及其常见和不同的结果组件。
转换函数属于哪里(按包而言)?

EDIT2:在深入研究问题后将 FeedData 指定为 slice (请参阅评论)

最佳答案

您可以将 SourceDTO 结构嵌入到另一个结构中,如下所示:

type SourceDTO struct { // top level object
Success bool `json:"success"`
}

type FeedResponse struct {
FeedData YourCustomFeedStruct `json:"feed"`

// Embedded Struct
SourceDTO
}

现在您可以从 FeedResponse 结构中访问 Success bool。此外,可以从 FeedResponse 访问 SourceDTO 结构上定义的任何方法。

关于json - 如何在 go 中构建抽象 json 解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57714334/

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