2016-08-30 23 views
-1

이 것이 존재하는지 또는 모범 사례가 이미 존재하는지는 알 수 없습니다.구조 언어를 사용하여 json 문자열에서 데이터 추출

나는 json 문자열이 있는데 SQL에서와 같은 쿼리 문자열을 사용하여이 json에서 데이터를 추출 할 수 있는지 알고 싶습니다. 이 JSON과

예 :

[ 
    { 
    "user": [ 
     { 
     "id": 1, 
     "name": "Smith", 
     "visits": [ 
      { 
      "id": 1, 
      "date": "2016-08-30 16:00:00", 
      "pageViews": 18 
      } 
     ] 
     }, 
     { 
     "id": 2, 
     "name": "Willis", 
     "visits": [ 
      { 
      "id": 2, 
      "date": "2016-08-30 18:00:00", 
      "pageViews": 34 
      } 
     ] 
     } 
    ] 
    } 
] 

내가 SELECT user.name WHERE user.visits.pageViews > 20 같은 쿼리를 실행하면 내가 윌리스 다른

, PHP에서 그런 일을 할 수있는 가장 좋은 방법은 무엇인가 얻을?

감사

+0

할 수 없습니다 ...... – Neal

+0

흠,'jq'를 사용하지 않으시겠습니까? 구조 언어도 설명하시오. – sjsam

+0

array_filter()를 시작하는 것이 좋습니다. –

답변

0

작업에 적합한 도구를 사용 jq. 39233103.json에 quesiton에 입력 된 샘플이 들어 있다고 가정합니다.

$ jq '.[]|.user[]|select(.visits[].pageViews>20)|.name' 39233103.json 
"Willis" 

샘플 실행은 raw output 당신이 [ exec ]을 사용할 수 PHP 내에서 그것을 할 지금 -r 옵션


$ jq -r '.[]|.user[]|select(.visits[].pageViews>20)|.name' 39233103.json 
Willis 
을 사용 얻으려면. 당신이 jq에 익숙하지 않은 경우 가정 아래 스크립트가 출력

$ php 39233103.php 
Willis 

39233103.php

<?php 
$output=array(); 
exec("jq -r '.[]|.user[]|select(.visits[].pageViews>20)|.name' 39233103.json", $output); 
foreach ($output as $val){ 
echo $val."\n"; 
} 
?> 

라는, [ this ]는 좋은 출발점이다.