如果数据不在Kony Studio的集合中,如何将数据映射到段?

时间:2014-03-17 10:50:59

标签: json kony

我正在使用 Kony Studio 5.5 进行跨平台开发。我使用JSON服务检索数据。我想在段中打印我的数据,但我无法映射其中的一些,因为它不在集合中。

"chartStat": " CHART NOT PREPARED ",
"passengers": [{
    "trainBookingBerth": "RAC9  , 8,GN    ",
    "trainCurrentStatus": "   CNF  ",
    "trainPassenger": "Passenger 1"
}],
"trainBoard": "Kovilpatti",
"trainBoardCode": "CVP",
"trainDest": "Chennai Egmore",

在上述有效内容中,我可以将passengers映射到该细分受众群,但我还想将trainBoardtrainBoardCodetrainDest映射到该细分受众群。

3 个答案:

答案 0 :(得分:2)

如果您使用的是Kony服务编辑器,请根据您的要求解析输出。通过解析结果,可以隔离所需的参数-i.e。:过滤从服务返回的结果 - 仅在客户端需要并以我们可以指定的格式。

如果细分受众群中有三个标签,并且您希望显示服务返回的passengers详细信息,请按以下步骤操作:

  1. 解析您的JSON数据,同时在服务编辑器中提及id,请记住使用段的子窗口小部件的id作为输出参数的id
  2. 解析后,你必须得到一个类似于以下的集合
  3.     [
            { "labelOneId": "RAC1 , 8,GN ", "labelTwoId": " CNF 1", "labelThreeId": "Passenger 1" },
            { "labelOneId": "RAC2 , 8,GN ", "labelTwoId": " CNF 2", "labelThreeId": "Passenger 2" },
            { "labelOneId": "RAC3 , 8,GN ", "labelTwoId": " CNF 3", "labelThreeId": "Passenger 3" },
            { "labelOneId": "RAC3 , 8,GN ", "labelTwoId": " CNF 4", "labelThreeId": "Passenger 4" }
        ]
    

    labelOneIdlabelTwoIdlabelThreeId将成为用于需要显示数据的细分的子项的ID的位置。

    1. 在此之后使用Kony.ui.segment小部件的set data方法来设置数据。
    2. 注意:如果您没有使用子窗口小部件的ID,则必须使用" for"格式化数据。循环迭代器。

      从问题中提供的样本值中提取值:

      var jsonReturned={
          "chartStat": " CHART NOT PREPARED ",
          "passengers": [{
              "trainBookingBerth": "RAC9 , 8,GN ",
              "trainCurrentStatus": " CNF ",
              "trainPassenger": "Passenger 1"
          }],
          "trainBoard": "Kovilpatti",
          "trainBoardCode": "CVP",
          "trainDest": "Chennai Egmore"
      };
      
      var oneVal   = jsonReturned["passengers"]["0"]["trainBookingBerth"];
      var twoVal   = jsonReturned["passengers"]["0"]["trainCurrentStatus"];
      var threeVal = jsonReturned["passengers"]["0"]["trainPassenger"];
      var fourVal  = jsonReturned["trainBoard"];
      var fiveVal  = jsonReturned["trainDest"];
      
      var dataForSegment =    [{
          "labelOneId": oneVal,
          "labelTwoId": twoVal,
          "labelThreeId": threeVal,
          "lableFourId": fourVal,
          "labelFiveId": fiveVal
      }];
      

      尝试将此设置为dataForSegment作为细分数据。如果要添加任何其他值,您必须同样从JSON对象中提取数据并形成适合您的段的集合。

答案 1 :(得分:0)

这个问题是很久以前问过的,但是对于任何想知道如何做到这一点的人,可以使用分别用于 addDataAtsetDataAt方法在段中的指定位置插入 替换单行数据。

摘自 Kony的小部件程序员指南》 about the addDataAt method

  

允许您在给定索引或节中添加一行数据。

addDataAt(data, rowIndex, sectionIndex)

about the setDataAt method

  

允许您设置数据或修改行或节中的现有数据。

setDataAt(data, rowIndex, sectionIndex)

我希望这对以后的人有帮助。

答案 2 :(得分:0)

你需要按照这个结构把数据放到Segment...

 var data=[
    [{lblHeading:"Section1"},[{samplelabel:"1"},{samplelabel:"1"},{samplelabel:"1"},{samplelabel:"1"}]],
        [{lblHeading:"Section2"},[{samplelabel:"1"},{samplelabel:"1"},{samplelabel:"1"},{samplelabel:"1"}]],
    [{lblHeading:"Section3"},[{samplelabel:"1"},{samplelabel:"1"},{samplelabel:"1"},{samplelabel:"1"}]],
    [{lblHeading:"Section34"},[{samplelabel:"1"},{samplelabel:"1"},{samplelabel:"1"},{samplelabel:"1"}]]

  ];
    this.view.segmentList.setData(data);