我正在调用一个返回多部分HTTP响应的web api。
以
的形式...possible other content...
--97b6f48d-7f7e-4e96-bd0b-ced047222460
Content-Type: application/json; charset=utf-8
{"key":"this is the JSON"}
--97b6f48d-7f7e-4e96-bd0b-ced047222460--
...possible other content...
我只想要JSON:{"key":"this is the JSON"}
。
GUID 97b6f48d-7f7e-4e96-bd0b-ced047222460
是边界标识符,用于标识随机生成的http响应部分。
我知道响应只有一部分有JSON内容。我提取它的最佳方式是什么?
仅供参考我在邮递员中使用脚本,因此需要使用javascript。
答案 0 :(得分:0)
我没有找到任何自动方式来分割postman中的多部分HTTP响应,所以我使用解析整个响应并找到{...}
JSON
由于我确信在整个多部分响应中只有一个JSON文档对象,我可以查找最外面的括号。
它利用计数器变量来跟踪开/关括号。当计数器达到零时(在找到一个将计数器设置为1
的开括号后),我们知道我们已经找到了JSON的结尾。
这是代码:
//find the JSON in the multi part response
var p, q;
var foundFirstBracket = false;
var stackCount = 0;
for(var i = 0; i < responseBody.length; i++)
{
if(responseBody[i] === '{')
{
if(!foundFirstBracket)
{
foundFirstBracket = true;
p = i;
}
stackCount++;
}
else if(responseBody[i] === '}')
{
stackCount--;
}
if(stackCount === 0 && foundFirstBracket)
{
q = i;
break;
}
}
var jsonString = responseBody.substring(p, q+1);
var jsonData = JSON.parse(jsonString);