Javascript 遍历格式不良的对象
我有一个非常糟糕的格式化javascript对象:Javascript 遍历格式不良的对象,javascript,Javascript,我有一个非常糟糕的格式化javascript对象: commits = { commit: { name: 'First commit' }, commit: { name: 'Second commit' } } 如您所见,提交对象的每个子对象都称为提交,因此实际上排除了用于。。。在里面或者任何其他javascript循环,我就是这么想的,但我是一个非常糟糕的JS程序员,所以我可能错了。所以,问题是,我如何迭代这个对象 请记住,我不能在这里使用jQuery,也
commits = {
commit: {
name: 'First commit'
},
commit: {
name: 'Second commit'
}
}
如您所见,提交对象的每个子对象都称为提交,因此实际上排除了用于。。。在里面或者任何其他javascript循环,我就是这么想的,但我是一个非常糟糕的JS程序员,所以我可能错了。所以,问题是,我如何迭代这个对象
请记住,我不能在这里使用jQuery,也不能重写该对象
编辑:从以下json解析该对象:
{
"commits": {
"commit": {
"name": "First commit"
},
"commit": {
"name": "Second commit"
},
}
}
考虑到您提供的页面中发布的JSON,您不需要做很多事情 JSON字符串似乎是有效的,只是字符串末尾缺少一个}。有了这个修正,它的解析就很好了:
JSON.parse('{\n \"accountURL\": \"https://domain.com\",\n \"newCommitsCount\": \"1\",\n \"pushURL\":\"https://domain.com/project/64249/git/source/compare/revisions/0b6438955f2a5a7981fd25cfa5b48fe3fb4c888d,7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"unsubscribeURL\": \"https://domain.com:443/unsubscribe?token=receiverToken&type=COMMITS&projectId=64249\",\n \"invokerEmail\": \"email@email.com\",\n \"projectURL\": \"https://domain.com/project/64249\",\n \"projectId\": \"64249\",\n \"afterPushRevision\": \"7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"invokerId\": \"38074\",\n \"pushDate\": \"2014-02-11T15:26:36+0000\",\n \"beforePushRevision\": \"0b6438955f2a5a7981fd25cfa5b48fe3fb4c888d\",\n \"repositoryURL\": \"git_url\",\n \"subdomain\": \"subdomain\",\n \"domain\": \"domain\",\n \"branch\": \"develop\",\n \"invokerProfileURL\": \"url\",\n \"commitsCount\": \"1\",\n \"invokerSmallAvatarURL\": \"xx\",\n \"projectName\": \"NAME\",\n \"invoker\": \"Invoker Name.\",\n \"commits\": {\"commit\": {\n \"revision\": \"7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"commitMessage\": \"quickfix\",\n \"committerId\": \"38074\",\n \"committerEmail\": \"email\",\n \"committerName\": \"Name.\",\n \"commitDate\": \"2014-02-11T15:26:27+0000\",\n \"commitURL\": \"https://domain.com/project/64249/git/source/commit/develop/7771e638d1356a14d1dc46f3f5cfaab858370a5e\" }}}')
同一对象上不可能有两个同名的不同属性。所以第二个覆盖了第一个。是的,这不是一个有效的对象。JSON字符串是什么?@mbajur不是你写的那样,它不是。也许你应该包括实际的对象,复制粘贴,而不是试图把它打印出来。您键入的内容不可能从JSON字符串生成。@mbajur:给我们原始JSON字符串。不要格式化它。准确地使用api返回的内容。更简单的是,创建一个数组,每个提交:{…}在不同的数组中。哇,你说得对!我现在觉得自己很跛。。。而生产如此糟糕的JSON字符串的公司应该破产了hell@mbajur:Sweet:D请确保仔细检查多个提交属性是否正确解析。我还希望这能说明为什么原始源数据在调试中很重要: