【发布时间】:2020-02-23 21:43:53
【问题描述】:
如果这看起来与其他问题相似,我深表歉意,但我无法找到任何为我解决此问题的帖子。基本上,我得到一个 JSON 对象,我试图解析它,但我无法正确解析它。主要是我从 Word API 获得的 WordDetails 部分。我能够得到 WordDetails 下结果部分之外的所有内容。基本上,当我得到结果时,我无法正确解析它。以下是格式示例。
{
"LastIndex": 133,
"SRDWords": [
{
"Domain": {
"URL": "abactinal.com",
"Available": true
},
"WordDetails": "{\"word\":\"abactinal\",\"results\":[{\"definition\":\"(of radiate animals) located on the surface or end opposite to that on which the mouth is situated\",\"partOfSpeech\":null,\"antonyms\":[\"actinal\"]}],\"syllables\":{\"count\":4,\"list\":[\"ab\",\"ac\",\"ti\",\"nal\"]}}"
},
{
"Domain": {
"URL": "aaronical.com",
"Available": true
},
"WordDetails": "{\"word\":\"aaronical\",\"syllables\":{\"count\":4,\"list\":[\"aa\",\"ron\",\"i\",\"cal\"]},\"pronunciation\":{\"all\":\"ɜ'rɑnɪkəl\"}}"
},
...
下面是我的代码。基本上,我正在进入 WordDetails 的结果部分,但是如果我尝试解析结果部分,它会失败,并且如果我尝试 object.entries,它不会根据我使用的警报消息返回响应。我知道必须有更好的方法,但不确定是什么。大多数文章只说 JSON.parse 然后映射它,但这不起作用。任何帮助将不胜感激!
data.Words.map(word => {
//get data
for (let [key, value] of Object.entries(word)) {
if (key === "Domain") {
url = value.URL;
availability = value.Available;
} else if (key.trim() === "WordDetails") {
alert("value " + value);
wDetails = JSON.parse(value);
for (let [key2, value2] of Object.entries(wDetails)) {
if (key2 === "word") {
//store word
} else if (key2.toString().trim() === "results") {
let test = JSON.parse(value2);
test = Object.entries(value2);
test.map(t => {
alert(t.definition);
});
}
}
}
}
});
【问题讨论】:
-
请在“不起作用”陈述中更具体,解释您得到的错误或不希望的结果
-
对不起,我现在看到了。我的意思是说,当我尝试在 WordDetails 的结果部分使用 Object.Entries 时,它要么不起作用,要么尝试将字符串分成字符数组。我想提取定义和同义词,但是当我解析它时,它不允许我做 test.definition。