首页 > 解决方案 > 从 javascript 中的 JSON 对象中获取值

问题描述

我有 JSON 对象结果,它是从 xml 数据响应转换而来的,如下所述。

{
    "env:Envelope": {
        "xmlns:env": [
            "http://schemas.xmlsoap.org/soap/envelope/"
        ],
        "xmlns:wsa": [
            "http://www.w3.org/2005/08/addressing"
        ],
        "env:Header": [
            {
                "wsa:MessageID": [
                    "urn:E8CC4000D1BF11EA8F1C35236A977E2C"
                ],
                "wsa:FaultTo": [
                    {
                        "wsa:Address": [
                            "http://www.w3.org/2005/08/addressing/anonymous"
                        ],
                        "wsa:ReferenceParameters": [
                            {
                                "instra:tracking.compositeInstanceCreatedTime": [
                                    {
                                        "_": "2020-07-29T12:21:16.054-05:00",
                                        "xmlns:instra": [
                                            "http://xmlns.o.com/sca/tracking/1.0"
                                        ]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            }
        ],
        "env:Body": [
            {
                "processResponse": [
                    {
                        "xmlns": [
                            "http://xmlns.o.com/BPL_AutoRFC"
                        ],
                        "payload": [
                            {
                                "xmlns:dvm": [
                                    "http://www.o.com/XSL/Transform/java/tip.dvm.LookupValue"
                                ],
                                "xmlns": [
                                    ""
                                ],
                                "ns0:RfcProject": [
                                    {
                                        "xmlns:ns0": [
                                            "http://www.siebel.com/xml/RFC"
                                        ],
                                        "ns0:IntegrationStatus": [
                                            "RFC Query - Success"
                                        ],
                                        "ns0:Id": [
                                            "3-APXME9Y
                                        ],
                ]
            }
        ]
    }
}

下面使用的代码:

(async () => {
  const { response } = await soapRequest({ url: url, headers: sampleHeaders, xml: xml, timeout: 10000 }); // Optional timeout parameter(milliseconds)
  const { headers, body, statusCode } = response;
  console.log(headers);
  xml2js.parseString(body,{ mergeAttrs: true }, (err, result) => {
    if(err) {
        throw err;
    }

    // `result` is a JavaScript object
    // convert it to a JSON string
    const json = JSON.stringify(result, null, 4);

    // log JSON string
    console.log(json);
    
});

})();

我需要从上面的 JSON 对象结果中获取以下值。无论如何我可以获取价值。

低于值我需要从 JSON 对象中获取。在很多情况下,我需要像这样获取值。

“ns0:Id”:3-APXME9Y

任何人都可以在这方面提供帮助

标签: javascriptjson

解决方案


据我所知,您的 JSON 无效(缺少 " 和一些 ] } )。

剩下的我不确定你到底想做什么,但你可以访问 JSON 对象的属性。不要字符串化,从结果开始

let v=result["env:Envelope"]["env:Body"][0].processResponse[0].payload[0]["ns0:RfcProject"][0]["ns0:Id"][0]

这应该在 v 中分配字符串“3-APXME9Y”

但是请记住,这种方法存在某种缺陷。ns0 实际上是指命名空间“http://www.siebel.com/xml/RFC”并且可能会改变。如果您正在处理 XML,只需处理 XML 而不要转换为 JSON,因为它不支持命名空间。


推荐阅读