获取 Go json unmarshal 中出错的字段名称

Ric*_*kyA 6 json go

我有一些大的 json 文件,它们的字段包含的类型略有不同。

{ "a":"1" }
Run Code Online (Sandbox Code Playgroud)

{ "a":1 }
Run Code Online (Sandbox Code Playgroud)

当我解组第二个时,我得到:

cannot unmarshal number into Go value of type string
Run Code Online (Sandbox Code Playgroud)

然而,由于这些 json 很大,我希望有错误的实际字段,以便我可以修复它们。不UnmarshalTypeError保存结构体的字段类型。

有人知道获取字段名称的方法吗?(不是调试,我有很多不同的字段出错)

[编辑]我知道如何解决类型转换。我需要的是一种方法来查看我需要将该转换应用到哪些字段。

Elw*_*nar 3

简短的回答是你不能。

但是,要解决您的问题,有多种解决方案:

  • 深入json.Unmarshal研究源代码以更改其工作方式并添加您需要的信息:将函数复制到本地包,进行编辑并使用此函数
  • 使用第三方工具来帮助您,例如与JSON Schema兼容的 JSON 验证器:这是一个在线示例,可能有一些更适合的工具