我正在使用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的答案。

因此,在我的情况下,解决方案是:

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

07-24 09:32