如何将 IPFS link 转换为 JSON?

How to convert IPFS link into JSON?

所以我的朋友们正在制作一个 NFT 合约并使用 IPFS 来存储元数据。 我想查看生成的 IPFS link 中包含的 JSON,以便我可以在 Bootstrap 卡片中显示元数据。 当我使用此代码调用浮出水面的合约函数之一时:

const tokenContract = new ethers.Contract(nftaddress, NFT.abi, provider);
const nft = await tokenContract.tokenURI(1);
console.log("nft:", nft);

我得到了这个输出,所以我可以看到来自合约的函数调用有效:

nft: ipfs://Qmchgm5...GLnGMk

但是当我尝试将 IPFS link 转换为 JSON 格式时(正如我在访问 link URL 时看到的那样) t 工作并抛出此错误:

console.log('nft:', nft.json());
// TypeError: nft.json is not a function

有人可以解释为什么将 link 放入我的浏览器可以显示 JSON,但尝试从 link 读取它却不能吗?我假设这是 IPFS 的一些基本功能,但我找不到任何东西(这对我来说很有意义,总的新手)告诉我这个功能以及如何在我的代码中读取 IPFS 对象。

提前致谢! -PhilosophOtter

IPDS CID 不是一个对象,而是对存储在 IPFS 网络上的资产的引用,例如,如果 IPFS 哈希是: bafybeidyp5tc6vfjsis7rziok4o6j6ckjajpug4wceavcyujm6bsiqqk4m 您可以使用像 Dweb 这样的 IPFS 网关访问它,这样您就可以执行以下操作: https://bafybeidyp5tc6vfjsis7rziok4o6j6ckjajpug4wceavcyujm6bsiqqk4m.ipfs.dweb.link/ 所以你可以这样得到 JSON:

const data = await fetch("https://bafybeidyp5tc6vfjsis7rziok4o6j6ckjajpug4wceavcyujm6bsiqqk4m.ipfs.dweb.link/")
const json = await data.json()
console.log(json)

您还应该阅读 this