如何解析Merriam-Webster API的JSON响应? 在我的manifest.json中:在我的background.js中:结果:

问题描述

我正在尝试创建一个Chrome扩展程序,以便在Merriam-Webster词典中搜索网络上的单词,因此我收到了API密钥,并开始将background.js编程为contextMenu。>

以下是响应示例: https://dictionaryapi.com/products/api-collegiate-dictionary

下面是我创建的示例代码,用于获取所选单词的词干。

在我的manifest.json中:

"permissions": [
     "contextmenus":,"https://dictionaryapi.com/"
]

在我的background.js中:

const apikey = "my_api_key";
var url = "";

function parse(json) {
    var script = JSON.parse(json);
    alert(script.stems.toString())
}

function searchText(info) {
    var xmlhttp = new XMLHttpRequest();
    url = "https://dictionaryapi.com/api/v3/references/collegiate/json/"+info.selectionText+"?key="+apikey;
    
    xmlhttp.open("GET",url,true)
    parse(xmlhttp.responseText)
}

chrome.contextMenus.create({
    title: 'Search "%s" in Dictionary',contexts: ['selection'],onclick: searchText
})

结果:

在此图像中,我在contextMenu中创建了一个项目。

enter image description here

但是,当我按下它时,它给了我这个错误:

Error in event handler: SyntaxError: Unexpected end of JSON input

它表明函数JSON.parse(json)中的parse(json)导致了错误。

我怀疑这是由于整个JSON文本周围的括号所致。 有没有办法从文本中获取stems项,或者有没有除去括号的方法?

解决方法

显示的示例响应here实际上不是JSON,因为它缺少左括号和右括号。您将不得不自己添加大括号;例如:

更改此:

parse(xmlhttp.responseText)

对此:

parse('{' + xmlhttp.responseText +'}')

顺便说一句,我希望声誉为1的用户发布的所有问题都能像您一样正确地编写和格式化。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...