downloadTemp2014 2017-01-16 18:18
浏览 60
已采纳

从JSON中排序特定对象

At the moment I'm trying PHP and JSON and I have problems with processing multidimensional arrays, like this one:

{"jsonrpc":"2.0","id":"1","result":[

{"type":"subst","lsid":11544,"lstype":"bs","date":20170116,"startTime":840,"endTime":900,"kl":[],"te":[{"id":205,"orgid":162}],"su":[],"ro":[{"id":121,"name":"HOF 3(2)"}]},

{"type":"subst","lsid":11550,"lstype":"bs","date":20170116,"startTime":840,"endTime":900,"kl":[],"te":[{"id":0,"orgid":172}],"su":[],"ro":[{"id":147,"name":"KAMP Turm"}]},

{"type":"subst","lsid":11554,"lstype":"bs","date":20170116,"startTime":745,"endTime":755,"kl":[],"te":[{"id":145,"orgid":179}],"su":[],"ro":[{"id":110,"name":"HS -A"}]},

{"type":"subst","lsid":11565,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":142,"orgid":196}],"su":[],"ro":[{"id":110,"name":"HS -A"}]},

{"type":"subst","lsid":11576,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":185,"orgid":268}],"su":[],"ro":[{"id":117,"name":"HOF 1"}]},

{"type":"subst","lsid":11581,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":291,"orgid":292}],"su":[],"ro":[{"id":120,"name":"HOF 3(1)"}]},

{"type":"cancel","lsid":11860,"date":20170116,"startTime":1220,"endTime":1315,"kl":[],"te":[{"id":186}],"su":[],"ro":[]},

{"type":"subst","lsid":11040,"date":20170116,"startTime":1400,"endTime":1445,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},

{"type":"subst","lsid":11040,"date":20170116,"startTime":1450,"endTime":1535,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},

{"type":"add","lsid":12051,"date":20170116,"startTime":1315,"endTime":1620,"txt":"FK DaZ","kl":[],"te":[{"id":155},{"id":193},{"id":195},{"id":205},{"id":206},{"id":299}],"su":[],"ro":[]},

]}

What I would like to have is:

{"jsonrpc":"2.0","id":"1","result":[
    {"type":"subst","lsid":11040,"date":20170116,"startTime":1400,"endTime":1445,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},
    {"type":"subst","lsid":11040,"date":20170116,"startTime":1450,"endTime":1535,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]}   

]}

So only the objects that have the kl object with id 240, should be displayed.

Thanks for the help.

  • 写回答

1条回答 默认 最新

  • douji4948 2017-01-16 18:47
    关注

    There is error in your JSON and it giving error while converting JSON to Php array

    {"type":"add","lsid":12051,"date":20170116,......},
                                                      ^ remove semicolon
    

    and final code will be

    <?php
    $arr = '{"jsonrpc":"2.0","id":"1","result":[{"type":"subst","lsid":11544,"lstype":"bs","date":20170116,"startTime":840,"endTime":900,"kl":[],"te":[{"id":205,"orgid":162}],"su":[],"ro":[{"id":121,"name":"HOF 3(2)"}]},{"type":"subst","lsid":11550,"lstype":"bs","date":20170116,"startTime":840,"endTime":900,"kl":[],"te":[{"id":0,"orgid":172}],"su":[],"ro":[{"id":147,"name":"KAMP Turm"}]},{"type":"subst","lsid":11554,"lstype":"bs","date":20170116,"startTime":745,"endTime":755,"kl":[],"te":[{"id":145,"orgid":179}],"su":[],"ro":[{"id":110,"name":"HS -A"}]},{"type":"subst","lsid":11565,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":142,"orgid":196}],"su":[],"ro":[{"id":110,"name":"HS -A"}]},{"type":"subst","lsid":11576,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":185,"orgid":268}],"su":[],"ro":[{"id":117,"name":"HOF 1"}]},{"type":"subst","lsid":11581,"lstype":"bs","date":20170116,"startTime":1030,"endTime":1050,"kl":[],"te":[{"id":291,"orgid":292}],"su":[],"ro":[{"id":120,"name":"HOF 3(1)"}]},{"type":"cancel","lsid":11860,"date":20170116,"startTime":1220,"endTime":1315,"kl":[],"te":[{"id":186}],"su":[],"ro":[]},{"type":"subst","lsid":11040,"date":20170116,"startTime":1400,"endTime":1445,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},{"type":"subst","lsid":11040,"date":20170116,"startTime":1450,"endTime":1535,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},{"type":"add","lsid":12051,"date":20170116,"startTime":1315,"endTime":1620,"txt":"FK DaZ","kl":[],"te":[{"id":155},{"id":193},{"id":195},{"id":205},{"id":206},{"id":299}],"su":[],"ro":[]}]}';
    
    //convert json tp php array
    $arr = json_decode($arr, true);
    $i = 0;
    foreach($arr['result'] as $itr){
        if(count($itr['kl']) == 1){
            if($itr['kl'][0]['id'] != 240){
                //remove index which doesn't contain kl with id 240
                unset($arr['result'][$i]);
            }
        } else {
            //remove index which doesn't contain kl with id
            unset($arr['result'][$i]);
        }
        $i = $i+1;
    }
    //re index array from the beginning
    $arr['result'] = array_values($arr['result']);
    echo json_encode($arr);
    ?>
    

    output

    {"jsonrpc":"2.0","id":"1","result":[{"type":"subst","lsid":11040,"date":20170116,"startTime":1400,"endTime":1445,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]},{"type":"subst","lsid":11040,"date":20170116,"startTime":1450,"endTime":1535,"txt":"EVA","kl":[{"id":240,"name":"12"}],"te":[{"id":0,"orgid":172}],"su":[{"id":38,"name":"CH G1"}],"ro":[{"id":140,"name":"WCH1"}]}]}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?