为了账号安全,请及时绑定邮箱和手机立即绑定

如何将结构写入分类帐状态

如何将结构写入分类帐状态

Go
一只名叫tom的猫 2022-07-11 15:00:42
我正在尝试为具有映射的 Hyperledger 编写链代码,该映射存储映射到字符串的结构值。这是我第一次为 Hyperledger 编写合约,也是我第一次使用 go,看来我没有以正确的方式处理这个问题。这是我的映射、数据结构、初始化函数和显示问题的 addVData 函数。type Data struct{    Timestamp string    Velocity string    Location string}var all_data map[string]Datafunc (t *DataContract) Init(stub shim.ChaincodeStubInterface) peer.Response {    all_data = make(map[string]Data)    return shim.Success(nil)}func (t *DataContract) addVData(stub shim.ChaincodeStubInterface, args []string) peer.Response {    params := stub.GetStringArgs()    fmt.Println("The params passed in are:", params)    if len(params) != 4 {        fmt.Println("Please resubmit in this particular order: addVData, Timestamp, Velocity, Location")        return shim.Error("Please resubmit in this particular order: addVData, Timestamp, Velocity, Location")    }    var d = Data{Timestamp:params[1], Velocity:params[2], Location:params[3]}    all_data[params[1]] = d    var err = stub.PutState(params[1],d)    return shim.Success(nil)}我得到的错误实际上非常清楚:./data.go:79:35:不能在 stub.PutState 的参数中使用 d(数据类型)作为类型 []byte我想知道,由于我的数据不是字节数组的形式,我该如何存储它?另外,我不确定我是否以正确的方式实现了 Init 方法和映射,但很难找到示例。如果您能解释并指出正确的方向,将不胜感激,谢谢。
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

使用json.Marshal函数转换struct成bytes


type UserData struct {

 a string

}



userdata := &UserData{a: "hello"}


// Mashelling struct to jsonByte object to put it into the ledger

userDataJSONBytes, err := json.Marshal(&userdata)

if err != nil {

    return shim.Error(err.Error())

}


var err = stub.PutState(params[1],userDataJSONBytes)


查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信