登录
首页 >  Golang >  Go问答

如何在 go 的“Unmarshal”过程中忽略错误字段?

来源:stackoverflow

时间:2024-02-09 22:06:22 184浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《如何在 go 的“Unmarshal”过程中忽略错误字段?》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

我正在使用 json.Unmarshal(body, outputStruct) 将字节数组转换为结构。解组期间可能会出现错误。

例如,结构是:

type Item struct {
    Price       float64  `json:"price"`
    Quantity    int      `json:"quantity"`
}

如果我将 quantity 作为浮点值而不是整数传递,则会引发错误。我想知道如何只能解组有效字段并跳过有错误的字段?

所以如果我解组一个 json:

{ price: 10, quantity: 2.5 }

我只想获取结构中的 price 值,但将数量保留为初始默认值。


正确答案


你不能。

如果您的 JSON 包含浮点数,您根本无法将其解组为 int。您必须:

  1. 使用 float64 并在解组后处理代码中的非整数
  2. 为您的类型编写自己的 UnmarshalJSON
  3. 执行两步解组,一旦忽略 ("-") Quantity,这样它就不会失败,并仅对 Quantity(新结构)进行第二次解组并忽略错误。

2 是“最好的”方法,但我不确定“跳过类型错误的字段”背后的逻辑是什么?如果数量为 2.5,数量会是什么值? 0?为什么?

终于介绍完啦!小伙伴们,这篇关于《如何在 go 的“Unmarshal”过程中忽略错误字段?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>