在 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>
这里是新手问题。我正在使用 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>