我想创建一个地图,可以将其转换为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"` }
您可以随时使用interface{}存储任何类型。如encoding/json包装袋中的文件所述:
interface{}
encoding/json
若要将JSON解组为接口值,请解组JSON为包含在接口值中的具体值。如果接口值为nil,即其中没有存储具体值,则Unmarshal会将其中之一存储在接口值中: bool,对于JSON布尔值 float64,对于JSON数字 字符串,对于JSON字符串 [] interface {},对于JSON数组 map [string] interface {},对于JSON对象, nil对于JSON null
若要将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}