在 node.js 中处理来自 soap 网络服务调用的字符串响应的最佳方式

Best way of handling string response from soap web service call in node.js

这里是新手问题。我正在使用 node-soap 在 node.js 中调用 Web 服务调用并获得类似于以下内容的响应:

{ AuthenticateResult:
   { PrimaryKeyId: '0',
     ValidateOnly: false,
     OperationResult: 'Succeeded',
     SessionId: 'abc45235435345' } }

如果 OperationResult 是 'Succeeded',从响应中提取 SessionId 值的最佳方法是什么?我猜我可以用 indexof 和 substring 做到这一点,但即使对像我这样的新手来说,这听起来也不是一个好的解决方案。

假设输入存储为字符串,并且是一致的(即 JSON 冒号左侧没有引号),您可以使用正则表达式将其转换为 JSON 字符串,然后 使用JSON.parse().

var input = "{ AuthenticateResult: {\n"
            + "PrimaryKeyId: '0',\n"
            + "ValidateOnly: false,\n"
            + "OperationResult: 'Succeeded',\n"
            + "SessionId: 'abc45235435345' } }";

// This replaces word: with "word": and ' with "
var json = input.replace(/(\w+):/g, '"":').replace(/'/g, '"');

// This here's the object you want
var obj = JSON.parse(json);

// Just printing out the JSON so you know it works.
document.getElementById('result').innerHTML = json;
<pre id="result"></pre>