如何快速找到一个json数据中的值'{data}'?

现在有一些json格式的数据,需要找到值为{data}的位置,例:

// 情况一
{"Result":{"code":"1","data":"{data}"}}

// 情况二
{"code":'1',"list":"{data}"}

// 情况三
.......

有什么好的办法解决的,请教一下。

阅读 2.7k
评论
    3 个回答
        $s='{"Result":{"code":"1","data":"{data}"}}';
        //$s='{"code":1,"list":"{data}"}';
        $res = json_decode($s,1);
        //echo array_search('{data}',$res);
        function get($res,$key){
            foreach($res as $k=>$v){
                if(is_array($v)) {
                    return get($v,$key);
                } else {
                    if($v == $key) {
                        return $k;
                    }
                }
            }
          return null;
        }
        echo get($res,'{data}');//data

      是后台返回的数据把,叫后台统一数据啊

        粗暴的方法是解成数组然后递归查找

        $str1 = '{"Result":{"code":"1","data":"{data}"}}';
        
        $arr = json_decode($str1,true);
        echo findInArray($arr,'{data}'); // $arr["Result"]["data"]
        
        // 查找出现位置
        function findInArray($arr,$value,&$path='$arr'){
          foreach($arr as $key=>$val){
            if(is_string($key))$key = '"'.$key.'"';
            $newpath = $path.'['.$key.']';
            if(is_array($val) && $a = findInArray($val,$value,$newpath)) {
                return $a;
            }
            if($val===$value) return $newpath;
          }
        }
          撰写回答

          登录后参与交流、获取后续更新提醒

          相似问题
          推荐文章