HTTP适配器错误“运行时:无法解析JSON字符串”

时间:2013-03-10 09:20:32

标签: ibm-mobilefirst

我正在使用IBM Worklight Studio,并尝试创建从外部http服务器检索JSON对象的HTTP适配器。

当我只使用HTTP Get访问目标http服务器时(例如使用浏览器),我知道他们的响应类似于以下数组样式的JSON格式:

[
  { "xxx":"aaa", "yyy":"bbb", ... },
  { "xxx":"ccc", "yyy":"ddd", ... },
    :
  { "xxx":"eee", "yyy":"fff", ... } 
]

我创建了HTTP适配器,可以检索上述信息

var input = {
  method : 'get',
  returnedContentType : 'json',
  path : path
};

return WL.Server.invokeHttp(input);

现在我尝试使用“Run As - > Invoke Worklight Procedure”调用此适配器,然后收到此错误消息:

{
   "errors": [
      "Runtime: Failed to parse JSON string\n\n[\n  {\n
   (raw JSON data) } ],
   "info": [],
   "isSuccessful": false,
   "warnings": []
}

在我的日志控制台中,worklight会显示以下错误消息:

FWLSE0101E: Caused by: java.io.IOException: Expecting '{' on line 2, column 2 instead, obtained token: 'Token: ['

从上面的信息来看,似乎worklight会期望返回的JSON对象需要以“{”开头,而不是“[”。

这是我的猜测吗?有没有解决方法呢?

感谢您提前。

1 个答案:

答案 0 :(得分:3)

您可以将returnedContentType更改为“plain”,这将使WL服务器将内容作为大字符串返回,而不是尝试解析它。 然后在您的适配器中,您可以使用var obj = JSON.parse(response.text)