gpt4 book ai didi

go - 使用 NewEncoder 的嵌套 JSON 流

转载 作者:IT王子 更新时间:2023-10-29 01:44:19 25 4
gpt4 key购买 nike

我想知道是否可以流式传输 JSON 并包含流本身之外的其他(同级) key ?我想包含一些关于生成文件的额外数据。类似于以下内容:

{
"info": {
"department": "a",
"id": "1",
},
"members": [
{ "name": "a", "age": "1" },
{ "name": "b", "age": "2" },
{ "name": "c", "age": "3" },
...stream
]
}

目前,我将 JSON 流式传输到平面文件,如下所示:

package main

import (
"encoding/json"
"os"
)

type Member struct {
Name string `json:"name"`
Age int `json:"age"`
}

func main() {
enc := json.NewEncoder(os.Stdout)

letters := []string{"a", "b", "c", "d", "e", "f"}

for i, letter := range letters {
key := Member{letter, i}

var err = enc.Encode(&key)
if err != nil {
// handle err
}
}
}

但如上所述,我想添加另一个键(例如“info”)并将流包含在键(例如“members”)中

我可以想到一个解决问题的方法,将它们作为单独的文件存储在一个目录中,例如

directory
├─ members.json
└─ info.json

但是可以添加其他(同级) key 吗?还是我只能使用平面文件?

最佳答案

类似的事情是可能的,但不是特别简单。我在我尚未合并的 PR 中的一个开源项目中做了类似的事情。但是你可以看我的例子here .

我公开的接口(interface)是接受一个 io.ReadCloser 并返回一个(可能被操纵的)io.ReadCloser。在内部,它使用 json.Decoder 来解析 JSON,可能会向流中添加新数据。我不确定 json.Encoder 如何适应这个(如您的问题中所问)。

为您制作一个完整的工作示例对于 SO 答案来说是一项相当艰巨的任务,但我希望我提供的链接可以为您指明正确的方向。

在这种情况下,建议使用良好的单元测试和 TDD 方法!

关于go - 使用 NewEncoder 的嵌套 JSON 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50212303/

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