小编典典

将字符串映射到json对象的多种类型?

go

我想创建一个地图,可以将其转换为json对象,例如

{
   "a": "apple",
   "b": 2
}

但是golang指定使用类型声明地图,因此我可以使用map [string] string或map [string] int。我如何创建上述的json对象?

注意:直到运行时或需要创建json对象时,我才知道需要哪些数据和/或类型。因此,我不能只创建像

type Foo struct {
    A string `json:"a"`
    B int `json:"b"`
}

阅读 323

收藏
2020-07-02

共1个答案

小编典典

您可以随时使用interface{}存储任何类型。如encoding/json包装袋中的文件所述:

若要将JSON解组为接口值,请解组JSON为包含在接口值中的具体值。如果接口值为nil,即其中没有存储具体值,则Unmarshal会将其中之一存储在接口值中:

bool,对于JSON布尔值
float64,对于JSON数字
字符串,对于JSON字符串
[] interface {},对于JSON数组
map [string] interface {},对于JSON对象,
nil对于JSON null

只需执行以下操作:

m := map[string]interface{}{"a":"apple", "b":2}
2020-07-02