从多部分http响应中解析JSON? (邮差)

时间:2017-05-09 21:27:00

标签: javascript json http postman

我正在调用一个返回多部分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。

1 个答案:

答案 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);