2016-09-22 12 views
0

私はこの形式のjsonファイルを持っています。JSONファイルでキーの出現を取得する方法は?

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

READ 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()); 
    }) 

私が欲しい言葉「アサーション」

+0

を「アサーションは、」常にキーの名前になるだろうか?配列内のすべてのオブジェクトには「アサーション」というキーがありますか? –

+0

はい、私は常にvar str = jsonContent.getText( 'assertions')の代わりにアサーションword –

+0

を見つける必要があります。var str = jsonContent.assertions;を使用します。 –

答えて

0

ラベルアサーションのすべての出現箇所の数はそうなって、アレイ内のすべてのオブジェクトに表示されて取得することです配列の長さは発生数を示します。

jsonがjsonという変数に保持されていると仮定します。

json[x]["assertion"] 

はあなたにxが、この場合にだけ

json[x]["assertion"][0]["passed"] 
0
を使用し、trueまたはfalseにアクセスするには

[("passed":true}] 

なり、配列内のオブジェクトのインデックス値を与えます

試用版

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リストに真のアサーションの発生を取得し、あなたの目的は、オブジェクトの配列のキーの唯一カウントを取得する場合totalAssertionCount

0

にアサーションのassertionsFailと合計出現でアサーションを失敗し、あなたは文字列ではなく

を解析してみてください

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

0

この

をお試しください
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") 
関連する問題