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

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

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

 

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

返回数组的方法:https://blog.csdn.net/u013288190/article/details/108832503

// 一定要在文件开头引入这个
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);
 
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件工程小施同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值