当前位置: 首页 > 面试题库 >

无法使用非字符串键对json.marshal映射

戚建白
2023-03-14
问题内容

我想将a转换map[int]stringjson,所以我想json.Marshal()可以解决这个问题,但是它说不支持type失败map[int]string。但是,如果我使用map带键字符串,它可以正常工作。

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

稍后在检查编组代码时,将进行显式检查,以查看键是否不是字符串并返回UnsupportedTypeError

为什么什至不能使用基元作为键?如果json标准不允许非字符串键,是否不应该json.Marshal将原语转换为字符串并将其用作键?


问题答案:

这不是因为Go,而是因为Json:Json除了键字符串以外,不支持其他任何功能。

看看Json的语法:

pair
    string : value
string
    ""
    " chars "

完整的语法可在Json网站上找到。

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



 类似资料:
  • 问题内容: 我有一张看起来像这样的地图: 我的动词类如下: 我想序列化和反序列化我的VerbResult类的实例,但是当我这样做时,出现此错误: 我在网上阅读了您需要告诉杰克逊如何反序列化地图键的信息,但是我没有找到任何信息来解释如何进行此操作。动词类也需要在映射之外进行序列化和反序列化,因此任何解决方案都应保留此功能。 问题答案: 在此处给出的答案的基础上,建议使用反序列化器实现模块。所述Jod

  • 我想序列化和反序列化我的VerbResult类的实例,但是当我这样做时,我得到了这个错误:的(映射)键反序列化器 我在网上读到,你需要告诉杰克逊如何反序列化地图键,但我没有找到任何信息解释如何去做这件事。verb类也需要在映射之外进行序列化和反序列化,因此任何解决方案都应该保留此功能。

  • 我有一个字符串格式的JSON值,如下所示。 现在,如果我试着按如下方式映射它,它会工作并且映射得很好。 但是我想将其映射到自定义数据类,如下所示。 当我这样做时,vo的结果是null。 有关数据类的结构,请参阅以下内容。 请告诉我我做错了什么。谢谢

  • 问题内容: 我正在尝试将字符串解析为对象。我在下面的链接中查看了jQueryparseJSON文档, 我也包括了jquery库,所以我知道不是那样的。 到目前为止,这是我的代码 在Firebug中,出现以下错误: 我知道该解决方案很可能非常简单,但是我一直反复忽略它。 问题答案: 示例代码中的测试字符串不是有效的JSON: 现在,如果由于所有服务使该对象作为JSON字符串可用而执行所有操作,则jQ

  • 问题内容: 我想打印所有可用语言的排序波兰语名称。 不幸的是我对排序部分有疑问。输出为: 不幸的是,波兰语的出现前后,因此输出应为: 我该怎么做?是否存在一种通用的非语言相关的方法(例如,我现在要显示此方法,并使用另一种排序规则以另一种语言进行排序)。 问题答案: 您应该将整理器传递给sort方法: 默认的排序顺序是由字符串中的Unicode代码点定义的,并且在任何语言中都不是正确的字母顺序。

  • 问题内容: 我已经知道如何使用键入单个字符,如下所示。如何简单地 一次* 在文本框中输入 整个 预定义值? * 问题答案: 常见的解决方案是使用剪贴板: