如果值包含“最可能”,则拆分JSON值

时间:2014-12-09 18:27:23

标签: javascript json parsing

无法尝试解析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" 
        }
    ]
 };

2 个答案:

答案 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)

如上所述,我在这里看到了一些潜在的问题。

  1. 您有j.indexOf('Most_Likely')作为布尔条件的一部分。如果找不到该元素,indexOf将返回-1,这被视为truthy。您可能希望阅读j.indexOf('Most_Likely') !== -1

  2. 在您的示例obj1中,term:Most_Likely的值为"chars" |OR| new cars |OR| SUVs。在我看来,你过早地终止了你的字符串,导致JS想知道,&#34;所有这些是什么|或者|东西&#34;

  3. 您尝试在此行中的整数上调用splitobj1.Summary[i][j].indexOf('Most_Likely').split(" |OR| ")。如前所述indexOf返回索引,找到一个项目。如果从此行中删除indexOf位,它可能会执行您想要的操作。