无法尝试解析JSON值并捕获并存储我需要的内容。 基本上,我只想捕获表示为" Most_Likely"的值。另外,如果有OR语句,我需要将这些值分开。
对我可能做错了什么的想法?
这是我尝试这样做的,但我收到了JS错误。
for (i = 0; i < obj1.Summary.length; i++) {
for (j in obj1.Summary[i]) {
if (j.indexOf('Most_Likely') && obj1.Summary[i][j].indexOf('|OR|') >= 0){
var tempvalue = obj1.Summary[i][j].indexOf('Most_Likely').split(" |OR| ");
attributesvalues.push(tempvalue);
alert(attributesvalues);
}
else{
//do nothing
}
}
}
//示例JSON
var obj1 = {
"Summary" :
[
{
"host:Most_Likely" : "www.google.com",
"host:Indicative" : "www.yahoo.com |OR| www.google.com",
"term:Most_Likely" : "cars" |OR| new cars |OR| SUVs,
"term:Indicative" : "automatic |OR| Lexus |OR| SUVs |OR| Civic"
}
]
};
答案 0 :(得分:1)
此行中的错误
var tempvalue = obj1.Summary[i][j].indexOf('Most_Likely').split(" |OR| ");
indexOf
返回位置(类型编号),在String对象中拆分,这就是为什么会出错。
var attributesvalues = [],
tempvalue;
for (var i = 0; i < obj1.Summary.length; i++) {
for (var j in obj1.Summary[i]) {
if (j.indexOf('Most_Likely') >= 0 && obj1.Summary[i][j].indexOf('|OR|') >= 0) {
tempvalue = obj1.Summary[i][j].split(" |OR| ");
attributesvalues.push(tempvalue);
} else {
}
}
}
console.log(attributesvalues);
答案 1 :(得分:1)
如上所述,我在这里看到了一些潜在的问题。
您有j.indexOf('Most_Likely')
作为布尔条件的一部分。如果找不到该元素,indexOf
将返回-1,这被视为truthy。您可能希望阅读j.indexOf('Most_Likely') !== -1
。
在您的示例obj1
中,term:Most_Likely
的值为"chars" |OR| new cars |OR| SUVs
。在我看来,你过早地终止了你的字符串,导致JS想知道,&#34;所有这些是什么|或者|东西&#34;
您尝试在此行中的整数上调用split
:obj1.Summary[i][j].indexOf('Most_Likely').split(" |OR| ")
。如前所述indexOf
返回索引,找到一个项目。如果从此行中删除indexOf
位,它可能会执行您想要的操作。