猿问

Go - 动态构建 struct/json

在 Python 中,可以创建字典并将其序列化为 JSON 对象,如下所示:


example = { "key1" : 123, "key2" : "value2" }

js = json.dumps(example)

Go 是静态类型的,所以我们必须先声明对象模式:


type Example struct {

    Key1 int

    Key2 string

}


example := &Example { Key1 : 123, Key2 : "value2" }

js, _ := json.Marshal(example)

有时,具有特定模式(类型声明)的对象(结构)只需要在一个地方而不是其他地方。我不想产生大量无用的类型,也不想为此使用反射。


Go 中是否有任何语法糖提供了一种更优雅的方式来做到这一点?


繁华开满天机
浏览 359回答 2
2回答

浮云间

您可以使用地图:example := map[string]interface{}{ "Key1": 123, "Key2": "value2" }js, _ := json.Marshal(example)您还可以在函数内部创建类型:func f() {    type Example struct { }}或者创建未命名的类型:func f() {    json.Marshal(struct { Key1 int; Key2 string }{123, "value2"})}

动漫人物

您可以使用匿名结构类型。example := struct {    Key1 int    Key2 string}{    Key1: 123,    Key2: "value2",}js, err := json.Marshal(&example)或者,如果您准备失去某种类型安全性,则map[string]interface{}:example := map[string]interface{}{    "Key1": 123,    "Key2": "value2",}js, err := json.Marshal(example)
随时随地看视频慕课网APP

相关分类

Go
我要回答