使用 get 函数从 Solidity 结构接收 JSON [Express]
Posted
技术标签:
【中文标题】使用 get 函数从 Solidity 结构接收 JSON [Express]【英文标题】:Receive JSON from Solidity struct using get function [Express] 【发布时间】:2019-10-06 17:23:44 【问题描述】:我需要这样的 JSON:
meteo: 'Fluorine', commento: 'F'
但是当我使用 get 函数时,我收到了这个:
[ '1meteo', '1commento', meteo: '1meteo', commento: '1commento' ]
我使用 Express 作为后端,这是我的代码:
app.get('/getallgiornale', async function (req, res)
// Get the contract instance.
const networkId = await web3.eth.net.getId();
const deployedNetwork = Giornaledeilavori.networks[networkId];
const instance = new web3.eth.Contract( Giornaledeilavori.abi, deployedNetwork && deployedNetwork.address );
// getAll
const response = await instance.methods.getAll().call();
res.send(response);
);
在 Solidity 中:
contract Giornaledeilavori
struct Dati
string meteo;
string commento;
Dati[] public dati;
//getAll function:
function getAll() public returns (Dati[] memory)
Dati[] memory d = dati;
return d;
//set function:
function setDato(string memory _meteo, string memory _commento) public
Dati memory newDati = Dati(
meteo: _meteo,
commento: _commento
);
dati.push(newDati);
Express中的set函数是这样的:
app.get('/setgiornale', async function (req, res)
var accounts = await web3.eth.getAccounts();
// Get the contract instance.
const networkId = await web3.eth.net.getId();
const deployedNetwork = Giornaledeilavori.networks[networkId];
const instance = new web3.eth.Contract( Giornaledeilavori.abi, deployedNetwork && deployedNetwork.address );
// setDati
instance.methods.setDato('1meteo','1commento').send(
from: accounts[0],
gas:"4500000",
privateFor:['ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc=']
,(error, transactionHash) =>
if(error)
console.log(error);
res.send(500);
else
res.send(transactionHash);
);
)
在 set 函数中,我尝试使用 json 而不是 send,但它不起作用。 我使用了 json stringify 但它不起作用。
如何接收 json?
感谢您的回答。
【问题讨论】:
【参考方案1】:您应该在节点服务器中返回 json 格式:
return res.json( questions: questions );
由于这一行,您也会收到数组响应
dati.push(newDati);
【讨论】:
我知道,但我收到了这个回复:[ '1meteo', '1commento', meteo: '1meteo', commento: '1commento' ]
,而不是这个:` questions: questions `
刚刚更新了我的答案。您需要找到一种方法来更改响应,因为您将数据推送到数组中
试试这个链接看看它是否适合你***.com/questions/2295496/convert-array-to-json以上是关于使用 get 函数从 Solidity 结构接收 JSON [Express]的主要内容,如果未能解决你的问题,请参考以下文章
以太坊 Solidity 函数返回(returns)多个值 和 接收方式