首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RPG YAJL在数组内解析数组

RPG YAJL在数组内解析数组
EN

Stack Overflow用户
提问于 2020-03-03 03:00:26
回答 1查看 166关注 0票数 0

这是RPG的新手,我对如何做到这一点有点迷茫。"data“是一个包含我需要的信息的数组,我能够解析它。然而,"cargoLoaded“是"data”数组中的一个数组,它只包含一项"cargoSensor1“。我需要cargoSensor1的值。

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

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

代码语言:javascript
复制
{
   "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"
      },
代码语言:javascript
复制
  *                                                                     
  /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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-03 06:25:01

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

代码语言:javascript
复制
  /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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60495054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档