如何解析 Merriam-Webster api 的 JSON 响应?
How do I parse Merriam-Webster api's JSON response?
我正在尝试制作一个 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
})
结果:
在这张图片中,我在上下文菜单中创建了一个项目。
然而,当我按下它时,它给我这个错误:
Error in event handler: SyntaxError: Unexpected end of JSON input
说明函数parse(json)
中的JSON.parse(json)
导致了错误。
我怀疑是因为整个 JSON 文本都被括号包围了。
有没有办法从文本中获取 stems
项,或者有没有办法删除括号?
显示的示例响应 here 实际上不是 JSON,因为它缺少左大括号和右大括号。您将不得不自己添加大括号;例如:
改变这个:
parse(xmlhttp.responseText)
为此:
parse('{' + xmlhttp.responseText +'}')
顺便说一下,我希望具有 1
声誉的用户发布的所有问题都像您的一样写得和格式一样好。
我正在尝试制作一个 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
})
结果:
在这张图片中,我在上下文菜单中创建了一个项目。
然而,当我按下它时,它给我这个错误:
Error in event handler: SyntaxError: Unexpected end of JSON input
说明函数parse(json)
中的JSON.parse(json)
导致了错误。
我怀疑是因为整个 JSON 文本都被括号包围了。
有没有办法从文本中获取 stems
项,或者有没有办法删除括号?
显示的示例响应 here 实际上不是 JSON,因为它缺少左大括号和右大括号。您将不得不自己添加大括号;例如:
改变这个:
parse(xmlhttp.responseText)
为此:
parse('{' + xmlhttp.responseText +'}')
顺便说一下,我希望具有 1
声誉的用户发布的所有问题都像您的一样写得和格式一样好。