解析http响应内容字符串

时间:2014-07-24 19:55:17

标签: javascript http meteor

我正在使用Meteor中的javascript,我向API发出HTTP.get请求并收到响应res = {..., content: "access_token=4h378fi243h085giouf245&expires=5180430", data=null}。如您所见,res.content是一个字符串,但它实际上代表了一个不错的JSON对象{access_token: 4h378fi243h085giouf245, expires: 5180430}

是否有Meteor或Javascript包/ easy解决方案将该字符串转换为该对象?

(我已经看过一些手动字符串解析解决方案,但这看起来很糟糕,这看起来像Meteor或Javascript会为你提供的。)

编辑: 做JSON.parse(res.content)实际上是我尝试的第一件事,但它给了我'意外的令牌',我猜是来自'access_token'。为什么那不起作用?

3 个答案:

答案 0 :(得分:2)

它实际上不是JSON,它是一个URL参数字符串。

var result = {};
res.content.split("&").forEach(function(part) {
  var item = part.split("=");
  result[item[0]] = decodeURIComponent(item[1]);
});
result = JSON.parse(result);

答案 1 :(得分:1)

这里的所有答案都忘记了res.content不是JSON,而是查询字符串的事实。请参阅此问题,了解如何获取值,稍微调整一下:How can I get query string values in JavaScript?

我还创建了一个名为Cerealizer的JavaScript类库,它将查询字符串解析为一个对象。我确定github搜索也可以拉动其他人。

var parser = new Cerealizer.QueryString();

res.content = parser.deserialize(res.content);

答案 2 :(得分:-2)

JSON.parse应该做你想做的事。