2017-01-24 9 views
0

以下は、基本情報を保存する顧客構造を作成したチェーンコードの抜粋です。 UID(args [0])を使って顧客の詳細を最初に取り出し、関数更新の2番目の引数としてCountryを追加/更新し、最終的に更新されたデータを保存する更新関数を記述したいと思います。 私は何が間違っていますか?また、私はマーシャルとアンマーシャルという概念を知りたいと思います。構造体のデータを更新してチェーンコードに保存するにはどうすればいいですか?

あなたはJSONパッケージが、これは任意のデータ型に文字列のマップを保持するデコードdata.For例を置くことができる変数を提供する必要があり
type Customer struct { 
    UID  string 
    Name string 
    Address struct { 
    StreetNo string 
    Country string 
    } 
} 
func (t *SimpleChaincode) update(stub shim.ChaincodeStubInterface, args []string) ([]byte, error) { 


if len(args) != 2 { 
    return nil, errors.New("Incorrect number of arguments. Expecting name of the key to query") 
} 
    //args[0] to get the UID of customer whose details to be updated 
    //args[1] data that needs to be updated 

data,err:= stub.GetState(ars[0]) 
if err != nil { 
    return nil, err 
} 
json.Unmarshal(data, &uid) 
//append 
data.Country= append(data.Country,args[1]) 
fmt.Printf("Risk Fag set for UID %s",data) 

raw, err := json.Marshal(data) 
    if err != nil { 
    return nil, err 
    } 

    stub.PutState(data.UID, raw) 

return nil,nil 

} 

答えて

0

map[string]interface{} 

byt := []byte(`{"num":6.13,"strs":["a","b"]}`) 
if err := json.Unmarshal(byt, &dat); err != nil { 
    panic(err) 
} 
fmt.Println(dat) 

結果は次のとおりです。

map[num:6.13 strs:[a b]] 
0

Fabricチェーンコードの例では、JSONとの間で構造体をマーシャリングおよびアンマーシャリングする良い例があります。チェーンからJSONデータを読み込み、構造体の特定のフィールドを更新し、JSONデータをチェーンに再保存する方法を示します。次の例のtransferMarble関数を参照してください。

https://github.com/hyperledger/fabric/blob/release/examples/chaincode/go/marbles02/marbles_chaincode.go

関連する問題