访问行中有多个冒号的嵌套JSON键

时间:2017-08-29 12:06:11

标签: javascript json node.js

我有这个JSON对象,我不知道如何访问 - 控制台只打印undefined

我不知道如何使用冒号访问多个密钥。

JSON对象:

 {
  'soapenv:Envelope': {
    '$': {
      'xmlns:soapenv': 'http://schemas.xmlsoap.org/soap/envelope/',
      'xmlns:soapenc': 'http://schemas.xmlsoap.org/soap/encoding/',
      'xmlns:xsd': 'http://www.w3.org/2001/XMLSchema',
      'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance'
    },
    'soapenv:Header': [
      ''
    ],
    'soapenv:Body': [
      {
        'ns5:loginResponse': [
          {
            '$': {
              'xmlns:ns5': ' /* Website sending me this response */ '
            },
            'ns5:id': [
              /*Sessionkey*/
            ],
            'ns5:rc': [
              '0'
            ]
          }
        ]
      }
    ]
  }
}

我已经尝试过:

console.dir(res["soapenv:Envelope"]["soapenv:Body"][0][0]['ns5:rc'])

console.dir(res["soapenv:Envelope"]["soapenv:Body"]["ns5:loginResponse"])["ns5:rc"]

......以及其他一些我不知道的人。

3 个答案:

答案 0 :(得分:0)

当时采取一步。冒号的存在不应该影响任何东西,键只是字符串。首先看看res["soapenv:Envelope"]给你带来了什么。对我来说,在控制台中,我可以很好地访问它。

我试过res ["soapenv:Envelope"]["soapenv:Body"][0]["ns5:loginResponse"][0]["ns5:rc"]这也有效。

如果您无法访问该对象及其从请求返回,则您的路由器很可能在res上有特殊的方法,您应该使用它来访问它。

答案 1 :(得分:0)

如果你通过美化器运行你的JSON以使其更具可读性,那可能会有所帮助。

冒号不会有任何意义,因为它们是字符串的一部分。

以下是您需要访问ns5:rc

的内容
res['soapenv:Envelope']['soapenv:Body'][0]['ns5:loginResponse'][0]['ns5:rc']

答案 2 :(得分:0)

逐步进行,查看每个阶段的输出

请注意,阵列和物体混合在一起,这是您遇到困难的地方。在输出以{开头的情况下,它是一个对象,因此附加到您的条目的下一个内容应该是属性名称。相反,当输出以[开头时,它是一个数组,所以要追加的下一个应该是[0]这样的数字来获得第一个元素。

res["soapenv:Envelope"]

{$:{...},soapenv:Header:Array(1),soapenv:Body:Array(1)}

res["soapenv:Envelope"]["soapenv:Body"]

[{...}]

res["soapenv:Envelope"]["soapenv:Body"][0]

{ns5:loginResponse:Array(1)}

res["soapenv:Envelope"]["soapenv:Body"][0]["ns5:loginResponse"]

[{...}]

res["soapenv:Envelope"]["soapenv:Body"][0]["ns5:loginResponse"][0]

{$:{...},ns5:id:Array(0),ns5:rc:Array(1)}

res["soapenv:Envelope"]["soapenv:Body"][0]["ns5:loginResponse"][0]["$"]

{xmlns:ns5:“/ *网站向我发送此回复* /”}

res["soapenv:Envelope"]["soapenv:Body"][0]["ns5:loginResponse"][0]["$"]["xmlns:ns5"]

“/ *网站向我发送此回复* /”