我正在使用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对象需要以“{”开头,而不是“[”。
这是我的猜测吗?有没有解决方法呢?
感谢您提前。
答案 0 :(得分:3)
您可以将returnedContentType更改为“plain”,这将使WL服务器将内容作为大字符串返回,而不是尝试解析它。 然后在您的适配器中,您可以使用var obj = JSON.parse(response.text)