我正在使用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"`
}