我如何从 NEAR 合约接收 JSON 对象?
How do I receive a JSON object from a NEAR contract?
我希望从 Sputnik v2 DAO 合约接收 Proposal
数据。我想调用 get_proposals
,但 returns 是一个 json 提案列表。我不确定回调函数的方法签名在接收数据时会是什么样子。由于 sputnik-dao-contract
不是已发布的 Rust Crate,我无法导入 Proposal
结构并使用它进行反序列化。处理响应和获取 Proposal
id 的最佳方法是什么?
这是我要调用的方法:
https://github.com/near-daos/sputnik-dao-contract#view-multiple-proposals
如何在 Rust 中以编程方式接收、反序列化和使用响应?
如果 get_proposals
方法已经 returns 了一份提案列表,您不是已经得到了您需要的东西吗?我的意思是,数据在响应中。如果您需要针对特定 ID 的提案,您可以随时使用另一个函数 get_proposal。
从响应来看,该结构看起来很简单,您可以自己创建它。您也可以直接从存储库中复制 Proposal struct。
/// Proposal that are sent to this DAO.
#[derive(BorshSerialize, BorshDeserialize, Serialize, Deserialize)]
#[cfg_attr(not(target_arch = "wasm32"), derive(Debug))]
#[serde(crate = "near_sdk::serde")]
pub struct Proposal {
/// Original proposer.
pub proposer: AccountId,
/// Description of this proposal.
pub description: String,
/// Kind of proposal with relevant information.
pub kind: ProposalKind,
/// Current status of the proposal.
pub status: ProposalStatus,
/// Count of votes per role per decision: yes / no / spam.
pub vote_counts: HashMap<String, [Balance; 3]>,
/// Map of who voted and how.
pub votes: HashMap<AccountId, Vote>,
/// Submission time (for voting period).
pub submission_time: U64,
}
事实证明,答案是创建一个与 json 响应匹配的准系统结构。
的准系统结构
pub struct Proposal {
pub id: u64,
}
(来自 https://github.com/near-daos/sputnik-dao-contract/blob/main/sputnikdao2/src/views.rs#L12)得到了我需要的东西。我根据需要添加了其他字段。
我希望从 Sputnik v2 DAO 合约接收 Proposal
数据。我想调用 get_proposals
,但 returns 是一个 json 提案列表。我不确定回调函数的方法签名在接收数据时会是什么样子。由于 sputnik-dao-contract
不是已发布的 Rust Crate,我无法导入 Proposal
结构并使用它进行反序列化。处理响应和获取 Proposal
id 的最佳方法是什么?
这是我要调用的方法: https://github.com/near-daos/sputnik-dao-contract#view-multiple-proposals
如何在 Rust 中以编程方式接收、反序列化和使用响应?
如果 get_proposals
方法已经 returns 了一份提案列表,您不是已经得到了您需要的东西吗?我的意思是,数据在响应中。如果您需要针对特定 ID 的提案,您可以随时使用另一个函数 get_proposal。
从响应来看,该结构看起来很简单,您可以自己创建它。您也可以直接从存储库中复制 Proposal struct。
/// Proposal that are sent to this DAO.
#[derive(BorshSerialize, BorshDeserialize, Serialize, Deserialize)]
#[cfg_attr(not(target_arch = "wasm32"), derive(Debug))]
#[serde(crate = "near_sdk::serde")]
pub struct Proposal {
/// Original proposer.
pub proposer: AccountId,
/// Description of this proposal.
pub description: String,
/// Kind of proposal with relevant information.
pub kind: ProposalKind,
/// Current status of the proposal.
pub status: ProposalStatus,
/// Count of votes per role per decision: yes / no / spam.
pub vote_counts: HashMap<String, [Balance; 3]>,
/// Map of who voted and how.
pub votes: HashMap<AccountId, Vote>,
/// Submission time (for voting period).
pub submission_time: U64,
}
事实证明,答案是创建一个与 json 响应匹配的准系统结构。
的准系统结构pub struct Proposal {
pub id: u64,
}
(来自 https://github.com/near-daos/sputnik-dao-contract/blob/main/sputnikdao2/src/views.rs#L12)得到了我需要的东西。我根据需要添加了其他字段。