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

标签 json go

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

{ "a":"1" }

对比

{ "a":1 }

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

cannot unmarshal number into Go value of type string

但是,由于这些 json 很大,我希望有错误的实际字段,以便我可以修复它们。 UnmarshalTypeError不包含结构的字段类型。

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

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

最佳答案

简短的回答是你不能。

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

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

关于json - 获取Go json unmarshal中出错的字段名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24325210/

相关文章:

java - Json解析: How to fetch "body" data inside "body array" using Gson (or better in other java library or notation supported)?

javascript - 如何在 Angular 2 中以编程方式构建 JSON

go - 在 Go 中,如何在运行时从其类型创建一个新的结构实例?

logging - 使用多个后端进行日志记录

http - 如何使用中间件惯用地记录身份验证信息

javascript - 在 React 状态中保持更新的对象关系

mysql - 使用 Mysql 在 Go 中创建父子嵌套 json

javascript - 如何(或更恰本地说 : Why) does JSON. Stringify 更改 Date() 值?

go - 页面完全加载后如何重定向到另一个页面

go - 在 Go 中解释字符串文字