从SOAP转换后如何访问嵌套的JSON节点?

时间:2018-02-19 23:51:04

标签: javascript json soap

使用node.js(javascript)如何访问已从SOAP数据转换的此JSON数据中的GetDataResult节点。

{
"s:Envelope": {
    "$": {
        "xmlns:s": "http://schemas.xmlsoap.org/soap/envelope/"
    },
    "s:Body": [{
        "GetDataResponse": [{
            "$": {
                "xmlns": "http://tempuri.org/"
            },
            "GetDataResult": ["You entered: TEST"]
        }]
    }]
  }
}

1 个答案:

答案 0 :(得分:0)

使用交互模式进行测试:

$ node
> var x = {
... "s:Envelope": {
.....     "$": {
.......         "xmlns:s": "http://schemas.xmlsoap.org/soap/envelope/"
.......     },
.....     "s:Body": [{
.......         "GetDataResponse": [{
.........             "$": {
...........                 "xmlns": "http://tempuri.org/"
...........             },
.........             "GetDataResult": ["You entered: TEST"]
.........         }]
.......     }]
.....   }
... }
undefined
> console.log(x["s:Envelope"]["s:Body"][0]["GetDataResponse"][0]["GetDataResult"][0])

输出:

'You entered: TEST'

解释:

我试着从下面的评论中详细说明一下。没有容器,我试着解释一下:

您必须将视为它的内容:对象数据结构

中,我们会在 哈希表等中说出 dict ...在全球范围内,& #39;所有关于关联数组

所以,当你在JSON中看到:

"key" : { "value" }

它是关联数组

相反,如果你看到

"key": [
    { "key1": "foo" },
    { "key2": "bar" },
    { "key3": "base" }
]

它是一个散列数组关联数组

当您访问一个没有空格或奇数字符的简单关联数组时,您可以(在中执行:

variable.key

在您的情况下,您的密钥名称中包含奇数字符:,因此x.s:Envelope无法正常工作。相反,我们写:x['s:Envelope']

如果[]中有关联数组数组,则必须告诉js需要获取哪个数组编号。它只有一个关联数组的数组,所以它很简单,我们通过传递数组来深入数据结构,即'我们用

做了什么
x['s:Envelope']["s:Body"][0]
                          ^
                          |