[RPG YAJL解析数组中的数组

问题描述 投票:0回答:1

RPG的新手,我对如何执行此操作有些迷茫。 “数据”是一个包含我需要的信息的数组,我能够解析它。但是,“ cargoLoaded”是“数据”数组中的一个数组,其中包含单个项“ cargoSensor1”。我需要cargoSensor1的值。

JSON和下面我的代码的一部分(不包括数据区域。)>

我想解析的JSON(我需要值cargoSensor1)

{
   "success": true,
   "data":    [
            {
         "address": "6061 Segale Park Dr C",
         "cargoLoaded": [{"cargoSensor1": false}],
         "city": "Tukwila",
         "deviceId": 10841293,
         "eventDateTime": "2020-03-02 17:27:56",
         "eventTypeName": "Cargo Update",
         "gpsTrackedDistance": 3.029E7,
         "heading": 294,
         "id": 14364709,
         "idle": false,
         "idleStartTime": null,
         "ignitionOn": false,
         "ignitionOnStartTime": null,
         "inputs": ["ATIS Inactive"],
         "landmarkId": null,
         "landmarkName": null,
         "lat": 47.434048,
         "lng": -122.258198,
         "moving": false,
         "movingStartTime": null,
         "name": "1823U",
         "serial": "BK2007237851",
         "speed": 0,
         "state": "WA",
         "stopped": true,
         "stoppedStartTime": "2020-02-25 17:20:31",
         "tractorId": null,
         "tractorName": null,
         "tractorPower": false,
         "tractorPowerStartTime": "",
         "typeId": 3,
         "typeName": "Trailer",
         "zip": "98188"
      },
  *                                                                     
  /Free                                                                 
       docNode = yajl_stmf_load_tree('/home/smid/D#status.txt' :ErrMsg);

       If ErrMsg = '';                                                  
         list = yajl_object_find( docNode: 'data');                     
         i=0;                                                           
         DoW YAJL_ARRAY_LOOP(list: i: node);

//get trailer number from name value-works                             
           val = yajl_object_find(node: 'name');                        
            valName = yajl_get_string(val);                             
             dsply valName;                                             

             exsr FMT_TLR_KEY;                                          

             dsply @TLR1;

//Atempt to get cargoSensor data-dont work                                                                                                                                                                
          val = yajl_object_find(node: 'cargoSensor1');                  
           valCarg = yajl_is_true(val);                                  
            dsply valCarg;                                               


            exsr UPD_TLR;                                                
            exsr UPD_SAT_TLR;                                            

        EndDo;                                                           

      EndIf;                                                             

      yajl_tree_free(docNode);                                           

  *inlr = *on;
  /End-Free

RPG的新手,我对如何执行此操作有些迷茫。 “数据”是一个包含我需要的信息的数组,我能够解析它。但是,“ cargoLoaded”是“数据”数组中的一个数组,其中包含单个项目...

arrays json ibm-midrange rpgle yajl
1个回答
1
投票

您应该像访问cargoLoaded数组一样访问data数组:

© www.soinside.com 2019 - 2024. All rights reserved.