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

时间:2017-01-10 14:05:34

标签: javascript ibm-mobilefirst mobilefirst-adapters

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

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

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

  3. JSON大小是否有限制?

  4. 我们尝试过:

    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. 使用非常大的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]
      });
      
    5. 返回错误

      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);
      }
      

1 个答案:

答案 0 :(得分:2)

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

要跟踪此问题,已打开以下APAR:PI74759:无法通过JSON对象或JSON阵列作为MFP.SERVER.INVOKEPROCEDURE的参数

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