转换提交从git到json数组/ json对象不工作(Nodejs)

你好我试图格式化我的json在这个时候我有一个很长的数组[],然后json对象在{}。 现在我得到一个奇怪的格式,我的对象的名称保存在错误的格式。 例如,而不是“commit”:“commitname”,下面的代码就是我使用的代码:

function put(error, stdout, stderr) { var commitsbybranch = JSON.stringify(stdout.split(/\r?\n/).map(function(e) { return e.substring(0);}).filter(function(e) { return e; })); var commitsObj2 = JSON.parse(commitsbybranch); console.log(commitsObj2.length); function toObject(commitsbybranch) { var ss = {}; for (var i = 0; i < commitsbybranch.length; ++i) ss[i] = commitsbybranch[i]; return ss; } fs.writeFile('reacted/public/testcommitsbybranch.json', commitsbybranch); } 

我的json现在看起来像这样:

 ["commit commitname",","Merge: 27755ba 5c51","Author: Harsharan <harsharan@coolio.com>","Date: Mon Feb 29 18:01:11 2016 +0000","commit commitname2",","Merge: 27755ba 5c51","Author: Harsharan <harsharan@coolio.com>","Date: Mon Feb 29 18:01:11 2016 +0000"] 

请帮我解决它

你需要parsing的结果git log 'branchName' 。 尝试这个:

 function put(error, stdout, stderr) { var log = stdout.split(/\r?\n/); var json = []; var commitInfo = {}; for(var i in log){ var str = log[i]; if(str.match(/^commit\s+/)){ var split = str.split(/^commit\s+/); commitInfo['commit'] = split[1]; } if(str.match(/^Author:\s+/)){ var split = str.split(/^Author:\s+/); commitInfo['Author'] = split[1]; } if(str.match(/^Date:\s+/)){ var split = str.split(/^Date:\s+/); commitInfo['Date'] = split[1]; } if(str.match(/^\s+/)){ var split = str.split(/^\s+/); commitInfo['message'] = split[1]; } else if(commitInfo['commit'] != undefined && commitInfo['Author'] != undefined && commitInfo['Date'] != undefined && commitInfo['message'] != undefined){ json.push(commitInfo); commitInfo = {}; } } var commitsbybranch = JSON.stringify(json); fs.writeFile('reacted/testcommitsbybranch.json', commitsbybranch); }