我们有一个从后端系统返回数据数组的web服务,该服务使用Adapter过程进行集成。
在一台机器上,当返回数据时,我注意到承载数据的JSON对象名称被称为"array"。因此,当我想要访问数据时,我使用invocationResult.array
。一切都很好。
但是,当我的同事获得我的代码并在她的机器上运行时,适配器返回的JSON将"text"作为数据的对象名。有了这个,我的代码本质上是在发出错误,因为"数组"变成了unidentified
。
为什么不同机器上的对象名称不同?
更新我的同事计算机运行6.1版Worklight Studio插件,而我的计算机运行6.0版。然而,另一台运行6.1版本的机器根本没有遇到任何问题。这与Worklight设置有关吗?
另一个信息,我不确定是否会有帮助,有问题的机器运行在Windows Server 2008上,而其他运行在Windows 7专业上
您可能正在运行WL服务器/工作室的更新版本。WL适配器知道如何处理JSON响应。但是,在您的情况下,响应不是JSON对象,而是一个数组。WL服务器的旧版本将其视为明文,因此您有一个"text"属性。WL服务器的新版本知道如何处理数组,并将其解释为数组。这里最好的方法是在两台机器上使用相同的最新WL服务器/工作室版本。替代方案可能是通过JSAPI手动将数组字符串转换为数组对象。
事实证明,问题出在适配器returnedContentType
设置上。我同事的版本有一个值"plain",而实际的版本应该是"json">
非常感谢@Anton,因为他的回答为我指明了正确的方向。