Ibm mobilefirst HTTP适配器错误“;运行时:未能分析JSON字符串;

Ibm mobilefirst HTTP适配器错误“;运行时:未能分析JSON字符串;,ibm-mobilefirst,Ibm Mobilefirst,我正在使用IBM Worklight Studio,并尝试创建从外部HTTP服务器检索JSON对象的HTTP适配器 当我仅使用http Get access(例如,使用浏览器)访问目标http服务器时,我知道它们的响应类似于以下数组样式的JSON格式: [ { "xxx":"aaa", "yyy":"bbb", ... }, { "xxx":"ccc", "yyy":"ddd", ... }, : { "xxx":"eee", "yyy":"fff", ... } ] 我

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

当我仅使用http Get access(例如,使用浏览器)访问目标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);
现在,我尝试使用“运行方式->调用Worklight过程”调用此适配器,然后收到以下错误消息:

{
   "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对象需要以“{”开头,而不是以“[”开头

这是我的猜测吗?有什么解决办法吗


感谢您的帮助。

Worklight知道如何处理以
[
(JSON数组)开头的JSON对象。在这种情况下,Worklight将返回以下响应:

{ "array" : [*the json array*]}
查看HTTP适配器的代码,我发现解析不以
[
开头的JSON数组时存在错误

除了更改http服务器返回的响应外,我看不到解决此问题的方法


我打开了一个关于此的内部错误,感谢您帮助我们找到此错误。

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

只要确保来自目标服务器的响应以
\n
开头?是的。第一行是
\n
,第二行以“[”开头。我感谢您的支持。我再次检查,http服务器的响应似乎以
\n
开头,因此您的猜测是正确的。但格式是否错误?实际上,此http服务器是其他IBM产品(Lotus Domino),我不认为这种格式可以自定义。当然,我理解。我感谢您研究这个问题。如果您是IBM客户,您可能想打开一个关于这个问题的PMR,那里可能会提供一个解决方案。谢谢Anton。我已经更改了我的HTTP适配器的.js文件,以获得您建议的纯文本格式(returnedContentType:'plain'),这导致WL.Client.InvokeProcess成功。我还将我的成功回调函数的javascript更改为“var objs=JSON.parse(result.invokeResult.text);”。我已确认此功能如我所料有效。非常感谢!!