我想将map[int]string
转换为json
,因此我认为json.Marshal()
可以解决这个问题,但它不能说不支持的类型map[int]string
。但是,如果我使用带有键字符串的map
,它可以正常工作。
http://play.golang.org/p/qhlS9Nt8qQ
稍后检查marshaller代码时,会显式检查密钥是否不是字符串并返回UnsupportedTypeError
...
为什么我甚至不能使用原语作为键?如果json标准不允许非字符串键,那么不应该json.Marshal
将原语转换为字符串并将它们用作键吗?
答案 0 :(得分:13)
这不是因为Go,而是因为Json:Json不支持键的字符串以外的任何东西。
看看Json的语法:
pair
string : value
string
""
" chars "
完整语法可在Json website上找到。
不幸的是,要将整数用作键,您必须事先将它们转换为字符串,例如使用strconv.Itoa
:json
包不能完成这项工作。