如何将 IPFS 链接转换为 JSON?

Posted

技术标签:

【中文标题】如何将 IPFS 链接转换为 JSON?【英文标题】:How to convert IPFS link into JSON? 【发布时间】:2022-01-21 17:42:47 【问题描述】:

所以我的朋友们正在制作 NFT 合约并使用 IPFS 来存储元数据。 我想查看生成的 IPFS 链接中包含的 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 链接转换为 JSON 格式时(正如我在访问链接 URL 时看到的那样),这不起作用并引发此错误:

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

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

提前感谢您! -PhilosophOtter

【问题讨论】:

您的 nft 变量只包含 ipfs 端点。您需要使用 js-ipfs 模块来获取该端点的内容。 Ww 将需要有关您尝试检索的 JSON 是什么的更多信息。 只是试图检索图像、名称、描述等......其他人放入 IPFS 数据的元数据。我想通过它进行映射并制作引导卡 【参考方案1】:

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

【讨论】:

谢谢,我试试这个! @PhilosophOtter 这对您有帮助吗? 项目最终走向另一个方向,我最终不需要这样做。但我仍然想测试它,一旦我弄清楚它在项目中的哪个位置并尝试重现错误和解决方案,我会回复你!

以上是关于如何将 IPFS 链接转换为 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

如何将推特链接转换为嵌入式推文?

如何将 JSON 转换为 CSV 格式并存储在变量中

Pyspark 将 json 数组转换为数据帧行

如何从 JSON 字符串转换图像数据?

如何将字符串转换为 Angular 中的链接并将链接嵌套到 HTML 中

如何使用 Google S2 Converter 将 markdown() 中的链接转换为与 favicon 链接?