我有一些代码可以从API中获取数据并将其写入文件,API返回包含一些我不想要的信息的tokenIdMetadata,因此我将其设置为一个新的JSON对象tokenMetadata,并将其保存到一个文件中,如下所示。
const tokenIdMetadata = await Moralis.Web3API.token.getTokenIdMetadata(options);
const tokenMetadata = {};
tokenMetadata.token_id = tokenIdMetadata.token_id;
tokenMetadata.metadata = tokenIdMetadata.metadata;
fs.writeFileSync(folderName.concat('/', collectionSlug, '_', tokenID, '.json'), JSON.stringify(tokenMetadata, null, 4));问题是,代码在JSON文件中返回一个没有正确格式化的字符串
"token_id": "4",
"metadata": "{\"name\":\"Arcade Land Mega #4\",\"image\":\"ipfs://QmaJyxmwWkH17P7cpzRDFqcQwh7HYZ53VS9pJN3rtWKVPh\",\"description\":\"Arcade Lands are digital properties in an interoperable metaverse that serves as your web3 home for all your NFTs. Land owners will get additional benefits within the Arcadeverse.\",\"attributes\":[{\"trait_type\":\"Size\",\"value\":\"Mega\"},{\"trait_type\":\"Area\",\"value\":\"Frozen\"},{\"trait_type\":\"Underground\",\"value\":\"Weird Rocks\"}]}"这就是它的格式化方式。
"token_id" : "4",
"metadata" : {
name: 'Arcade Land Mega #4',
image: 'ipfs://QmXYYbVEFqVPRELzPN3fgCw9v3wr2iQqixbVaGS1JTH6mS',
description: 'Arcade Lands are digital properties in an interoperable metaverse that serves as your web3 home for all your NFTs. Land owners will get additional benefits within the Arcadeverse.',
attributes: [
{ trait_type: 'Size', value: 'Mega' },
{ trait_type: 'Area', value: 'Frozen' },
{ trait_type: 'Underground', value: 'Weird Rocks' }
]
}我在想我该怎么解决这个问题。
发布于 2022-05-19 14:23:28
我在文档https://docs.moralis.io/moralis-dapp/web3-api/token#gettokenidmetadata中检查了这个API调用的示例结果。看起来,这是因为无法解码传入的JSON。我认为用tokenIdMetadata.metadata代替JSON.parse(tokenIdMetadata.metadata)应该能解决这个问题。
最后的代码应该如下所示:
const tokenIdMetadata = await Moralis.Web3API.token.getTokenIdMetadata(options);
const tokenMetadata = {};
tokenMetadata.token_id = tokenIdMetadata.token_id;
tokenMetadata.metadata = JSON.parse(tokenIdMetadata.metadata);
fs.writeFileSync(folderName.concat('/', collectionSlug, '_', tokenID, '.json'), JSON.stringify(tokenMetadata, null, 4));https://stackoverflow.com/questions/72306139
复制相似问题