EOS对象序列化
一、对象的序列化支持
EOS需要对外部可访问对象进行序列化和反序列化,在合约调用发起时,需要将请求action的参数(json格式描述)根据abi进行序列化,发送到eos的action请求的参数是序列化的对象,eos收到请求后需要将其反序列化。在eos请求表数据时,需要对表数据进行反序列化并输出到请求的应答中。
对象的序列化和反序列化主要应用在请求的解析和请求应答的格式化中,在前后端的交互过程中被使用。
eos外部可访问对象都需要能进行序列化和反序列化,eos标准库定义了宏EOSLIB_SERIALIZE来实现对一个对象的序列化和反序列化支持,以下是对一个外部可访问对象的序列化支持:
/**
* @brief Data structure for movement
*/
struct movement {
uint32_t row;
uint32_t column;
EOSLIB_SERIALIZE( movement, (row)(column) )
};
/**
* @brief Action to make movement
*/
struct move {
account_name challenger;
account_name host;
account_name by; // the account who wants to make the move
movement mvt;
EOSLIB_SERIALIZE( move, (challenger)(host)(by)(mvt) )
};
二、对象反序列化
在执行action时ÿ