json - 编码结构 slice 时向生成的 JSON 添加外部标记

标签 json go

我很难在我的编码(marshal) JSON 结构中添加一个外部标签。这是我的例子:

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "time"
)

type tObj struct {
    ModTime time.Time `json:"mTime"`
    Name    string    `json:"mName"`
}

func main() {
    var objs []tObj
    objs = append(objs, getItem("first"))
    objs = append(objs, getItem("second"))

    json, err := json.MarshalIndent(objs, "", "    ")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(json))
}

func getItem(name string) tObj {
    var t tObj
    t.ModTime = time.Now()
    t.Name = name
    return t
}
到目前为止一切顺利,这给了我这样的东西:
[{
        "mTime": "2020-06-26T21:29:52.148663+02:00",
        "mName": "first"
    },
    {
        "mTime": "2020-06-26T21:29:52.148666+02:00",
        "mName": "second"
    }
]
我想要的只是向生成的 JSON 添加一个外部标签,如下所示:
{
    "objects": [{
            "mTime": "2020-06-26T21:29:52.148663+02:00",
            "mName": "first"
        },
        {
            "mTime": "2020-06-26T21:29:52.148666+02:00",
            "mName": "second"
        }
    ]
}
我尝试将 json 注释直接添加到 struct 类型,但这不起作用。实现这一目标的最简单方法是什么?

最佳答案

您不再是编码一个数组,而是编码一个对象。您可以通过以下方式实现:

json, err := json.MarshalIndent(map[string]interface{}{"objects":objs}, "", "    ")

关于json - 编码结构 slice 时向生成的 JSON 添加外部标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62601819/

相关文章:

java - Dart - 如何接收和解码从 Java 应用程序发送的 JSON 数据包

ios - 性能缓慢 Json 图像分辨率

c# - 使用 json 数组和 json 对象的优缺点

xml - Golang net/http 包调用后返回base64

javascript - Ionic 构建不会更新 Assets 文件夹的内容 (Ionic 3.5)

c# - 按名称/键在 JArray 中查找项目

json - 使用iotil.ReadAll()从多个json文件写入[] string

go - 如何将 slice 复制到自身

go - 多次返回时总是一个新变量

encryption - "No DEK-Info header in block"尝试读取加密私钥时