Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 如何访问Json中的嵌套键值对_Javascript_Angular_Typescript_For Loop - Fatal编程技术网

Javascript 如何访问Json中的嵌套键值对

Javascript 如何访问Json中的嵌套键值对,javascript,angular,typescript,for-loop,Javascript,Angular,Typescript,For Loop,我已将来自后端的响应作为嵌套哈希映射返回,该映射是哈希映射中的哈希映射: hmap.put(l,hmap)//hmap中的hmap 返回新的ResponseEntity(Collections.singletonMap(“responsive”,hmap),HttpStatus.OK) 我的后端响应如下所示: email1和email2是哈希映射的键,子部分是嵌套哈希映射的键和值对 responsive: {email2: {,…},…} email1: {sub3: "Hi Subpart

我已将来自后端的响应作为嵌套哈希映射返回,该映射是哈希映射中的哈希映射:

hmap.put(l,hmap)//hmap中的hmap

返回新的ResponseEntity(Collections.singletonMap(“responsive”,hmap),HttpStatus.OK)

我的后端响应如下所示:

email1和email2是哈希映射的键,子部分是嵌套哈希映射的键和值对

responsive: {email2: {,…},…}
 email1: {sub3: "Hi Subpart 3", sub4: "Hi Subpart 4",…}
  sub1: "Hi subpart 1"
  sub2: "Hi subpart 2"
  sub3: "Hi Subpart 3"
  sub4: "Hi subpart 4"
 email2: {,…}
  sub7: "Hi Subpart 7"
  sub8: "Hi Subpart 8"

I have accessed the email1 and email2 in the following fashion :

 Object.keys(emails.responsive).forEach(e => {
          let ref = this.dialog.open(emaildialog, {    
             data: emails.responsive[e],
             width: "600px",
             height: "600px",

            } 
          );

        });

现在我需要访问每种电子邮件类型的子部分,但我无法访问。

如果结构数据为:

 emails = {
  email1: {
    sub1: "Hi subpart 1",
    sub2: "Hi subpart 2",
    sub3: "Hi Subpart 3",
    sub4: "Hi subpart 4",
  },
  email2: {
    sub5: "Hi subpart 5",
    sub6: "Hi subpart 6",
    sub7: "Hi Subpart 7",
    sub8: "Hi subpart 8",
  }
}
您可以访问每种电子邮件类型的子部分:

Object.keys(emails).forEach(e => {
  Object.keys(emails[e]).forEach(item => {
    console.log(emails[e][item]);
  })
})

对于以下JSON或进一步嵌套的JSON:

    Obj : {
      email1: {
        sub1: "Hi subpart 1",
        sub2: "Hi subpart 2",
        sub3: "Hi Subpart 3",
        sub4: "Hi subpart 4",
      },
      email2: {
        sub5: "Hi subpart 5",
        sub6: "Hi subpart 6",
        sub7: "Hi Subpart 7",
        sub8: "Hi subpart 8",
      }
    }

请尝试以下内容:

  function getObjectKeyValue(obj, key) {
      if (typeof(obj) === "string")
        console.log(key + " " + obj);

      else for (key in obj)
        getObjectKeyValue(obj[key], key)
    }

getObjectKeyValue(Obj)

听起来它需要像普通对象一样被访问-
e.something
,但是从服务器返回的对象的结构确实不清楚。email1或email2中包含哪些内容?是否所有的电子邮件和Sub都在“响应”对象中找到,或者与它处于同一级别?如果你真的想澄清你从服务器上得到的更多信息,请在这里发布一个有效的json输出(查看网络选项卡并将响应粘贴到这里,你可能从控制台复制了它)我已经用更多信息编辑了这个问题,希望它有帮助!:-)
  function getObjectKeyValue(obj, key) {
      if (typeof(obj) === "string")
        console.log(key + " " + obj);

      else for (key in obj)
        getObjectKeyValue(obj[key], key)
    }