FISCO BCOS Solidity 智能合约 返回json对象、字典mapping、结构体
  DJsdk34H4Gbu 2023年11月02日 66 0


Solidity智能合约是没法返回json对象、字典、结构体的。

FISCO BCOS Solidity 智能合约 返回json对象、字典mapping、结构体_智能合约

​https://vomtom.at/how-to-return-a-mapping-in-solidity-and-web3/​


解决方案:返回多个数组,然后在应用层再进行拼接。

// 一定要在文件开头引入这个
pragma experimental ABIEncoderV2;


// 查询某个学生的所有成绩
function select_scores_info(address studentId) public view returns(string[], int[]){

TableFactory tf = TableFactory(0x1001);
Table table = tf.openTable("stu_score");

string memory stuIdStr = addressToString(studentId);
Condition condition = table.newCondition();
condition.EQ("student_id", stuIdStr);

Entries entries = table.select(stuIdStr, condition);

// 初始化数组大小
string[] memory user_courses_list = new string[](uint256(entries.size()));
int[] memory user_scores_list = new int[](uint256(entries.size()));

// 给数组赋值
for(int i=0; i<entries.size(); ++i) {

Entry entry = entries.get(i);
// 添加数组元素
user_courses_list[uint256(i)] = entry.getString("course_name");
user_scores_list[uint256(i)] = entry.getInt("score");

}

return (user_courses_list, user_scores_list);

}



FISCO BCOS Solidity 智能合约 返回json对象、字典mapping、结构体_数组_02

FISCO BCOS Solidity 智能合约 返回json对象、字典mapping、结构体_数组_03




【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
DJsdk34H4Gbu