登录
首页 >  Golang >  Go问答

成功捕获 Hyperledger Fabric 2.2.0 中的错误处理响应:数据值与架构不匹配

来源:stackoverflow

时间:2024-02-24 19:21:26 384浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《成功捕获 Hyperledger Fabric 2.2.0 中的错误处理响应:数据值与架构不匹配》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我正在使用 hyperledger fabric 2.2.0 和 fabric-network 2.1(没那么重要)。

我的链代码是用 go 编写的。所以我有一些在 json 标记中有 ,omitempty 的结构。这是我的结构:

type leasedetails struct {
    endofterm string `json:"endofterm"`
    info      string `json:"info,omitempty"`
    option    string `json:"option,omitempty"`
}

但是我从链代码中收到以下错误作为返回值:

peer=peer0.org1.example.com:7051, status=500, message=Error handling success response. Value did not match schema:
1. return.0.leaseDetails: info,omitempty is required
2. return.0.leaseDetails: option,omitempty is required

如果我从结构中删除 ,omitempty 并提供默认值,一切正常。 在 fabric-contract-api-go 的文档中提到有某种基于 json marshal/unmarshal 构建的序列化器,但对我来说,它似乎没有检测到 ,omitempty 关键字。

这是故意的吗?或者我在这里遗漏了什么?

提前致谢


解决方案


我从用户 @awjh 那里得到了 Hyperledger Chat 的答案。

这正如预期的那样,将 json 与元数据模式进行比较。 默认情况下,所有字段都是必需的,使用 omitempty 将意味着 当该字段没有值时,json 过程将删除该字段。这意味着一个 必填字段将会丢失。要解决此问题,请添加元数据标签来标记 该字段作为可选 metadata:",可选"

所以就我而言,解决方案是:

type LeaseDetails struct {
    EndOfTerm string `json:"endOfTerm"`
    Info      string `json:"info,omitempty" metadata:",optional"`
    Option    string `json:"option,omitempty" metadata:",optional"`
}

到这里,我们也就讲完了《成功捕获 Hyperledger Fabric 2.2.0 中的错误处理响应:数据值与架构不匹配》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

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