如何在JSON文件中获得关键的出现?

时间:2016-09-22 09:23:01

标签: javascript json protractor

我有一个这种格式的json文件。

var fs = require('fs');
contents = fs.readFileSync('./update_result.json');
jsonContent = JSON.parse(contents);

 it('get', function(){
        var str = jsonContent.getText('assertions');
        console.log(str.count());
    })

READ JSON

{{1}}

我想要的是得到“断言”这个词的所有出现次数

5 个答案:

答案 0 :(得分:0)

标签断言出现在数组中的每个对象中,因此获取数组的长度将为您提供出现的次数。

让我们假设你的json被保存在一个名为json的变量中。

json[x]["assertion"]

将为您提供值,其中x是数组中对象的索引,在本例中为

[("passed":true}]

要访问true或false,只需使用

json[x]["assertion"][0]["passed"]

答案 1 :(得分:0)

试试这个

var fs = require('fs');
contents = fs.readFileSync('./update_result.json');
jsonContent = JSON.parse(contents);

var assertionsTrue = [];
var assertionsFail = [];
var totalAssertionCount = 0;

it('get', function(){

    for(var i=0;i<jsonContent.length;i++){

        if(jsonContent[i].assertions != null && jsonContent[i].assertions != undefined){

            totalAssertionCount++;

            if(jsonContent[i].assertions.passed == true)
                assertionsTrue.push(jsonContent[i].assertions);
            else
                assertionsFail.push(jsonContent[i].assertions);
        }
    }
    console.log(totalAssertionCount);
})

您将在assertionsTrue列表中看到True Assertions,在assertionsFail中出现断言,在totalAssertionCount中出现断言总数

答案 2 :(得分:0)

如果您的目标是仅获取对象数组中的键数,则可以尝试使用字符串解析

&#13;
&#13;
function getKeyCount(searchKey, obj) {
  var r = new RegExp('"' + searchKey + '":', 'g');
  return (JSON.stringify(obj).match(r) || []).length;
}

var d = [{
  "description": "testcase1",
  "assertions": [{
    "passed": true
  }],
  "duration": 1246
}, {
  "description": "testcase2",
  "assertions": [{
    "passed": true
  }],
  "duration": 4
}, {
  "description": "description",
  "duration": 4
}];

console.log(getKeyCount('assertions', d))
console.log(getKeyCount('description', d))
&#13;
&#13;
&#13;

答案 3 :(得分:0)

试试这个

 jsonContent = JSON.parse(contents);
 var j=0;
 for(i = 0; i < jsonContent.length; i++) 
   {
     if(jsonContent[i].assertions)
       {
          j++;
       }
   }
   console.log("assertions:"+j);

答案 4 :(得分:0)

你可以写类似的东西:

 var myObj = [
  {
    "description": "testcase1",
    "assertions": [
      {
        "passed": true
      }
    ],
    "duration": 1246
  },
  {
    "description": "testcase2",
    "assertions": [
      {
        "passed": true
      }
    ],
    "duration": 4
  }
]

var counter = 0;
Array.prototype.getOccurence = function(arr){
    return ++counter
}
for (var key in myObj){

    var nodes = myObj[key];
    Array.prototype.getOccurence(myObj[key].assertions) 

}
console.log('Assertion occured :' + counter + "time")