【问题标题】:Is there a way to compare incoming JSON data with local JSON data?有没有办法将传入的 JSON 数据与本地 JSON 数据进行比较?
【发布时间】:2020-04-25 15:39:00
【问题描述】:

有一个网站 (Scryfall) 可以搜索所有万智牌:曾经打印过的收集卡并返回特定结果(特定稀有度/强度/名称等的卡)。我喜欢这个网站,但我只想在我个人拥有的卡片中进行搜索。

所以 Scryfall 有一个返回 JSON 结果的搜索 API。我已经将 collection.json 作为本地 JSON 文件,其中包含我个人收藏的数据,所以当我搜索 Scryfall 的 API 时,它会返回 JSON,将其与我的本地 JSON 进行比较,并且只显示两者都匹配的内容前端。

这是我目前所拥有的:

async function fetchAsync (url) {
    let response = await fetch(url)
    let data = await response.json()
    return data
}

let collection = fetchAsync('./collection')

let scryfall = fetchAsync('http://api.scryfall.com/cards/search?q=ceratops&unique=cards&as=grid&order=name')

let results = JSON.parse(scryfall).data.filter(card => { return collection.includes(card.id) } )

results.forEach(function (card) {
        document.querySelector('.card').innerHTML += "<li>" + card.name + "</li>"
    })

我希望它只在前端输出匹配的结果,但它没有这样做。

【问题讨论】:

  • 请分享您所做的一些代码,以便我们为您提供帮助
  • 这是我目前所拥有的:async function fetchAsync (url) { let response = await fetch(url) let data = await response.json() return data } let collection = fetchAsync('./collection') let scryfall = fetchAsync('http://api.scryfall.com/cards/search?q=ceratops&amp;unique=cards&amp;as=grid&amp;order=name') let results = JSON.parse(scryfall).data.filter(card =&gt; { return collection.includes(card.id) } ) results.forEach(function (card) { document.querySelector('.card').innerHTML += "&lt;li&gt;" + card.name + "&lt;/li&gt;" })
  • 请将代码添加到问题中,而不是在评论中????
  • 同样,根据要求 - 预期答案的示例会很棒
  • 这一切都完成了 - 非常感谢,很抱歉给您带来麻烦!

标签: json api search compare


【解决方案1】:

您可以使用 JSON.stringify 函数将 JavaScript 对象转换为字符串并与本地 json 进行比较。

检查 JSON.parse 和 JSON.stringify 你会知道如何做到这一点。

【讨论】:

  • 但是我如何实际比较两者并输出匹配项?
  • 如果您可以分享样本响应,那么它很容易帮助您。如果你以更好的方式详细说明。
猜你喜欢
  • 2018-11-17
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
相关资源
最近更新 更多