我正在尝试实现自定义VSCC(验证系统Chaincode),以根据FunctionName和有效负载数据(ChaincodeProposalPayload)添加一些额外的逻辑。目前我能够从ChaincodeActionPayload获取ChaincodeProposalPayload,但数据似乎是编码的。 以下是我正在使用的代码。
// args[0] - function name (not used now)
// args[1] - serialized Envelope
// args[2] - serialized policy
args := stub.GetArgs()
// get the envelope...
env, err := utils.GetEnvelopeFromBlock(args[1])
if err != nil {
logger.Errorf("VSCC error: GetEnvelope failed, err %s", err)
return shim.Error(err.Error())
}
// ...and the payload...
payl, err := utils.GetPayload(env)
if err != nil {
logger.Errorf("VSCC error: GetPayload failed, err %s", err)
return shim.Error(err.Error())
}
// ...and the transaction...
tx, err := utils.GetTransaction(payl.Data)
if err != nil {
logger.Errorf("VSCC error: GetTransaction failed, err %s", err)
return shim.Error(err.Error())
}
// loop through each of the actions within
fmt.Println(len(tx.Actions))
for _, act := range tx.Actions {
cap, err := utils.GetChaincodeActionPayload(act.Payload)
if err != nil {
logger.Errorf("VSCC error: GetChaincodeActionPayload failed, err %s", err)
return shim.Error(err.Error())
}
fmt.Println("payload " + string(cap.ChaincodeProposalPayload))
}
在控制台中,Payload打印为编码字符串,如
mycc 调用 一个 b 10
如何将有效负载正确解码为json?
答案 0 :(得分:3)
这样的事情应该有效:
function PostData()
{
var _data = JSON.stringify({ value : { FirstName: "ABC", LastName: "XYZ" } });
$.ajax({
url: "http://localhost:57786/api/values",
type: "POST",
contentType: "application/json",
data: _data,
success: function (data) {
alert("Success");
},
error: function (error) {
alert("Error");
}
});
}