Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 遍历格式不良的对象_Javascript - Fatal编程技术网

Javascript 遍历格式不良的对象

Javascript 遍历格式不良的对象,javascript,Javascript,我有一个非常糟糕的格式化javascript对象: commits = { commit: { name: 'First commit' }, commit: { name: 'Second commit' } } 如您所见,提交对象的每个子对象都称为提交,因此实际上排除了用于。。。在里面或者任何其他javascript循环,我就是这么想的,但我是一个非常糟糕的JS程序员,所以我可能错了。所以,问题是,我如何迭代这个对象 请记住,我不能在这里使用jQuery,也

我有一个非常糟糕的格式化javascript对象:

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请确保仔细检查多个提交属性是否正确解析。我还希望这能说明为什么原始源数据在调试中很重要: