首页 > 后端开发 > Golang > 正文

解组 JSON 时如何处理不明确的布尔值(0/1、真/假)?

Susan Sarandon
发布: 2024-11-26 22:06:15
原创
611 人浏览过

How Can I Handle Ambiguous Boolean Values (0/1, true/false) When Unmarshalling JSON?

通过解组处理 JSON 中不明确的布尔值

当映射不一致地将布尔值表示为 0 和 false(或 1 和 true)的服务的输出时,它在解组期间有必要采用更宽松的方法。虽然向 JSON 标签添加 ,string 可能还不够,但还有其他可用的解决方案。

实现自定义类型

解决方案是定义自定义类型(例如 ConvertibleBoolean)来处理不明确的情况布尔值。此类型包含一个 UnmarshalJSON 方法,该方法根据指定的约定将输入数据转换为布尔值。

type ConvertibleBoolean bool

func (bit *ConvertibleBoolean) UnmarshalJSON(data []byte) error {
    asString := string(data)
    if asString == "1" || asString == "true" {
        *bit = true
    } else if asString == "0" || asString == "false" {
        *bit = false
    } else {
        return errors.New(fmt.Sprintf("Boolean unmarshal error: invalid input %s", asString))
    }
    return nil
}
登录后复制

此自定义类型可确保将“1”和“0”等输入值解释为布尔值,允许解析而不会出现错误。

指针方法接收器

需要注意的是,为了自定义 UnmarshalJSON 方法要正确运行,必须将其实现为指针方法接收器。这是因为指针允许修改底层值。

通过利用这种方法,您可以有效地从 JSON 数据中解组不明确的布尔值,确保结果结构包含预期值,尽管输入数据不一致.

以上是解组 JSON 时如何处理不明确的布尔值(0/1、真/假)?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板