簡體   English   中英

RPG YAJL 解析數組內的數組

[英]RPG YAJL parse array within an array

RPG新手,我對如何做到這一點有點迷茫。 “數據”是一個包含我需要的信息的數組,我能夠解析它。 然而,“cargoLoaded”是“data”數組中的一個數組,它包含一個項目“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

您應該像訪問data數組一樣訪問cargoLoaded數組:

  /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;

//UPDATED CODE BLOCK HERE                                                                                                                                                          
           cargoList = yajl_object_find(node: 'cargoLoaded');                  
           DoW YAJL_ARRAY_LOOP(cargoList: j: node);
              val = yajl_object_find(node: 'cargoSensor1');                        
              valCarg = yajl_get_string(val);                             
              dsply valCarg;                                                 

              exsr UPD_TLR;                                                
              exsr UPD_SAT_TLR;
           EndDo;                                            

        EndDo;                                                           

      EndIf;                                                             

      yajl_tree_free(docNode);                                           

  *inlr = *on;
  /End-Free

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM