如何将 json 数组对象从一个 javascript 适配器传递到另一个 javascript 适配器?

How to pass json array object from one javascript adapter to another javascript adapter?

我们正在使用部署到 WebSphere Application Server V8.5.5.5 的 MobileFirst Foundation 8.0.0.00-20160822-2140。

  1. 如何将 json 数组对象从 javascript 适配器传递到另一个 javascript 适配器?

  2. 如何将带撇号的 json 数组对象从 javascript 适配器传递到另一个 javascript 适配器?

  3. JSON大小有限制吗?

我们已经尝试过:

  1. 从第一个 javascript 适配器调用第二个 javascript 适配器:

    var samplejsonarrayobject = [{a:"xxx",b:"yyy"},{c:"zzz",d:"aaa"}];
    var res = MFP.Server.invokeProcedure({
        adapter: "secondAdapter",
        procedure: "secondAdapterFunction",
        parameters: [samplejsonarrayobject]
    });
    
  2. 使用 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]
    });
    
  3. 要使用 非常大 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]
    });
    
  4. 从第一个 javascript 适配器调用第二个 javascript 适配器,带有非常大的 JSON 带撇号 :

    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: invalid type of element

对于2)测试用例:能够通过JSON.

对于 3) 测试用例: 无法通过 JSON.

Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('s' (code 115)): was expecting comma to seperate ARRAY entries at [Source : ['[{a:"xx'x",b:"yyy"},{c:"zzz",d:"aaa"}]; line 1, column]

对于 4) 测试用例:

Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('s' (code 115)): was expecting comma to seperate ARRAY entries at [Source : ['[{a:"xx'x",b:"yyy"},{c:"zzz",d:"aaa"}]; line 1, column]

通过以下方式解决:

jsonString = replaceAllString(jsonString, "'s", "'s");

function replaceAllString(stringJ,search, replacement) {
    return stringJ.replace(new RegExp(search, 'g'), replacement);
}

这确实是 MobileFirst Platform Foundation 7.1 的缺陷和回归。开发团队将努力解决此问题。

为了跟踪此问题,已打开以下 APAR:PI74759:无法将 JSON 对象或 JSON 数组作为参数传递给 MFP.SERVER.INVOKEPROCEDURE

更新:安装最新的 8.0 iFix 以获得此问题的修复,该问题驻留在服务器上,因此需要安装新的服务器。