我需要JSON编组的结果:
["a", "b", ["c", "d"], "e"]
在Go中如何正确执行此操作?
答案 0 :(得分:2)
创建混合类型的切片/数组的技巧是使用提供的空接口类型
inner := []string{"c", "d"}
all := []interface{}{"a", "b", inner, "e"}
然后只是json.Marshal
接口切片。这是有效的,因为任何和所有值至少实现一个空接口。您可以使用最臃肿的对象,就好像它没有任何方法/接收器函数可以调用。这就是为什么人们有时会将go interface{}
类型称为" generic" 类型。包中的许多抽象东西都使用interface{}
个参数,然后反射来计算实际传递的内容。只需查看encoding / json包的源代码,看看它如何解组值......
https://play.golang.org/p/96VVo2F1m7
Unmarshalling的工作方式几乎相同:您可以将JSON字符串解组为interface{}
个变量。您可能需要使用类型断言和/或反射来处理数据。这就是为什么最好创建类型的原因......
答案 1 :(得分:0)
您可以使用interface{}
切片,例如https://play.golang.org/p/c8dPRPK6mr