我们正在使用部署到WebSphere Application Server V8.5.5.5的MobileFirst Foundation 8.0.0.00-20160822-2140。
如何将json数组对象从javascript适配器传递到另一个javascript适配器?
如何将带有Apostrophe的json数组对象从javascript适配器传递到另一个javascript适配器?
JSON大小是否有限制?
我们尝试过:
从第一个javascript适配器调用第二个javascript适配器:
var samplejsonarrayobject = [{a:"xxx",b:"yyy"},{c:"zzz",d:"aaa"}];
var res = MFP.Server.invokeProcedure({
adapter: "secondAdapter",
procedure: "secondAdapterFunction",
parameters: [samplejsonarrayobject]
});
使用stringify
从第一个javascript适配器调用第二个javascript适配器:
var samplejsonarrayobject = [{a:"xxx",b:"yyy"},{c:"zzz",d:"aaa"}];
var stringifysamplejsonarrayobject = JSON.stringy(samplejsonarrayobject);
var res = MFP.Server.invokeProcedure({
adapter: "secondAdapter",
procedure: "secondAdapterFunction",
parameters: [stringifysamplejsonarrayobject]
});
使用非常大的 JSON文件从第一个javascript适配器调用第二个javascript适配器:
var largesamplejsonarrayobject = [{a:"xxx",b:"yyy"}...................................{c:"zzz",d:"aaa"}];
var largestringifysamplejsonarrayobject = JSON.stringy(largesamplejsonarrayobject);
var res = MFP.Server.invokeProcedure({
adapter: "secondAdapter",
procedure: "secondAdapterFunction",
parameters: [largestringifysamplejsonarrayobject]
});
使用非常大的JSON 使用撇号符号从第一个javascript适配器调用第二个javascript适配器:
var apostrophesamplejsonarrayobject = [{a:"xx'x",b:"yyy"},{c:"zzz",d:"aaa"}];
var apostrophestringifysamplejsonarrayobject = JSON.stringy(apostrophesamplejsonarrayobject);
var res = MFP.Server.invokeProcedure({
adapter: "secondAdapter",
procedure: "secondAdapterFunction",
parameters: [apostrophestringifysamplejsonarrayobject]
});
返回错误
1)测试用例:
[1/10/17 22:06:04:703 MYT] 00000131 MFP.Logger java.lang.IllegalArgumentException:无效的元素类型
对于2)测试用例:能够传递JSON。
对于3)测试用例:无法传递JSON。
引起:com.fasterxml.jackson.core.JsonParseException:意外 字符('(代码115)):期待逗号分开ARRAY 条目来自[来源:[' [{a:" xx' x",b:" yyy"},{c:" zzz"峰,d:" AAA"}];第1行, 柱]
对于4)测试用例:
引起:com.fasterxml.jackson.core.JsonParseException:意外 字符('(代码115)):期待逗号分开ARRAY 条目来自[来源:[' [{a:" xx' x",b:" yyy"},{c:" zzz"峰,d:" AAA"}];第1行, 柱]
通过以下方式解决:
jsonString = replaceAllString(jsonString, "'s", "'s");
function replaceAllString(stringJ,search, replacement) {
return stringJ.replace(new RegExp(search, 'g'), replacement);
}
答案 0 :(得分:2)
这确实是MobileFirst Platform Foundation 7.1的缺陷和回归。开发团队将致力于解决这个问题。
要跟踪此问题,已打开以下APAR:PI74759:无法通过JSON对象或JSON阵列作为MFP.SERVER.INVOKEPROCEDURE的参数
更新:安装最新的8.0 iFix以获取此问题的修复程序,该修复程序驻留在服务器上,因此需要安装新的服务器。