没有使用非字符串键的json.marshal映射

Vis*_*hnu 4 json go

我想转换map[int]stringjson,所以我认为json.Marshal()会做的伎俩,但它不能说不支持的类型map[int]string.但是如果我使用map带键字符串它可以正常工作.

http://play.golang.org/p/qhlS9Nt8qQ

稍后检查marshaller代码,有一个明确的检查,看看该键是否不是字符串并返回UnsupportedTypeError...

为什么我甚至不能使用原语作为键?如果json标准不允许非字符串键,不应该json.Marshal将原语转换为字符串并将它们用作键?

jul*_*enc 13

这不是因为Go,而是因为Json:Json不支持键的字符串以外的任何东西.

看看Json的语法:

pair
    string : value
string
    ""
    " chars "
Run Code Online (Sandbox Code Playgroud)

完整的语法可以在Json网站找到.

不幸的是,要使用整数作为键,您必须事先将它们转换为字符串,例如使用strconv.Itoa:它不是由json包来完成这项工作.