Мне нужен 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 выглядит следующим образом:
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);
}
});
})
В функции набора я пытался использовать jsonвместо отправки, но это не сработало.Я использовал json stringify, но он не работал.
Как я могу получить json?
Спасибо за ответы.