2017-11-06 16 views
1

PHP를 통해 다소 큰 JSON 파일에서 데이터 값을 추출하려고합니다. 이 파일은 USGS 서버에서 가져온 것으로, 필자는 단지 메타 데이터 전체가 아닌 데이터 값을 얻으려는 것이 아니라는 일련의 정보를 포함하고 있습니다. 필자는이 형식의 JSON 파일을 처리 할 필요가 없었습니다.바쁜 JSON 파일을 PHP로 구문 분석하기

{ 
"name": "ns1:timeSeriesResponseType", 
"declaredType": "org.cuahsi.waterml.TimeSeriesResponseType", 
"scope": "javax.xml.bind.JAXBElement$GlobalScope", 
"value": { 
    "queryInfo": { 
     "queryURL": "http://waterservices.usgs.gov/nwis/iv/format=json&sites=01129500&startDT=2017-11-05T18:00-0500&endDT=2017-11-06T03:00-0500&parameterCd=00060&siteStatus=all", 
     "criteria": { 
      "locationParam": "[ALL:01129500]", 
      "variableParam": "[00060]", 
      "timeParam": { 
       "beginDateTime": "2017-11-05T23:00:00.000", 
       "endDateTime": "2017-11-06T08:00:00.000" 
      }, 
      "parameter": [] 
     }, 
     "note": [ 
      { 
       "value": "[ALL:01129500]", 
       "title": "filter:sites" 
      }, 
      { 
       "value": "[mode=RANGE, modifiedSince=null] interval={INTERVAL[2017-11-05T23:00:00.000Z/2017-11-06T08:00:00.000Z]}", 
       "title": "filter:timeRange" 
      }, 
      { 
       "value": "methodIds=[ALL]", 
       "title": "filter:methodId" 
      }, 
      { 
       "value": "2017-11-06T21:03:28.078Z", 
       "title": "requestDT" 
      }, 
      { 
       "value": "efbacfd0-c335-11e7-9d73-6cae8b663fb6", 
       "title": "requestId" 
      }, 
      { 
       "value": "Provisional data are subject to revision. Go to http://waterdata.usgs.gov/nwis/help/?provisional for more information.", 
       "title": "disclaimer" 
      }, 
      { 
       "value": "vaas01", 
       "title": "server" 
      } 
     ] 
    }, 
    "timeSeries": [ 
     { 
      "sourceInfo": { 
       "siteName": "CONNECTICUT RIVER AT NORTH STRATFORD, NH", 
       "siteCode": [ 
        { 
         "value": "01129500", 
         "network": "NWIS", 
         "agencyCode": "USGS" 
        } 
       ], 
       "timeZoneInfo": { 
        "defaultTimeZone": { 
         "zoneOffset": "-05:00", 
         "zoneAbbreviation": "EST" 
        }, 
        "daylightSavingsTimeZone": { 
         "zoneOffset": "-04:00", 
         "zoneAbbreviation": "EDT" 
        }, 
        "siteUsesDaylightSavingsTime": true 
       }, 
       "geoLocation": { 
        "geogLocation": { 
         "srs": "EPSG:4326", 
         "latitude": 44.74977166, 
         "longitude": -71.63120018 
        }, 
        "localSiteXY": [] 
       }, 
       "note": [], 
       "siteType": [], 
       "siteProperty": [ 
        { 
         "value": "ST", 
         "name": "siteTypeCd" 
        }, 
        { 
         "value": "01080101", 
         "name": "hucCd" 
        }, 
        { 
         "value": "33", 
         "name": "stateCd" 
        }, 
        { 
         "value": "33007", 
         "name": "countyCd" 
        } 
       ] 
      }, 
      "variable": { 
       "variableCode": [ 
        { 
         "value": "00060", 
         "network": "NWIS", 
         "vocabulary": "NWIS:UnitValues", 
         "variableID": 45807197, 
         "default": true 
        } 
       ], 
       "variableName": "Streamflow, ft³/s", 
       "variableDescription": "Discharge, cubic feet per second", 
       "valueType": "Derived Value", 
       "unit": { 
        "unitCode": "ft3/s" 
       }, 
       "options": { 
        "option": [ 
         { 
          "name": "Statistic", 
          "optionCode": "00000" 
         } 
        ] 
       }, 
       "note": [], 
       "noDataValue": -999999, 
       "variableProperty": [], 
       "oid": "45807197" 
      }, 
      "values": [ 
       { 
        "value": [ 
         { 
          "value": "2550", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T18:00:00.000-05:00" 
         }, 
         { 
          "value": "2550", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T18:15:00.000-05:00" 
         }, 
         { 
          "value": "2520", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T18:30:00.000-05:00" 
         }, 
         { 
          "value": "2520", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T18:45:00.000-05:00" 
         }, 
         { 
          "value": "2520", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T19:00:00.000-05:00" 
         }, 
         { 
          "value": "2520", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T19:15:00.000-05:00" 
         }, 
         { 
          "value": "2500", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T19:30:00.000-05:00" 
         }, 
         { 
          "value": "2500", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T19:45:00.000-05:00" 
         }, 
         { 
          "value": "2500", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T20:00:00.000-05:00" 
         }, 
         { 
          "value": "2500", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T20:15:00.000-05:00" 
         }, 
         { 
          "value": "2500", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T20:30:00.000-05:00" 
         }, 
         { 
          "value": "2490", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T20:45:00.000-05:00" 
         }, 
         { 
          "value": "2490", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T21:00:00.000-05:00" 
         }, 
         { 
          "value": "2490", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T21:15:00.000-05:00" 
         }, 
         { 
          "value": "2490", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T21:30:00.000-05:00" 
         }, 
         { 
          "value": "2490", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T21:45:00.000-05:00" 
         }, 
         { 
          "value": "2470", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T22:00:00.000-05:00" 
         }, 
         { 
          "value": "2470", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T22:15:00.000-05:00" 
         }, 
         { 
          "value": "2450", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T22:30:00.000-05:00" 
         }, 
         { 
          "value": "2450", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T22:45:00.000-05:00" 
         }, 
         { 
          "value": "2450", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T23:00:00.000-05:00" 
         }, 
         { 
          "value": "2450", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T23:15:00.000-05:00" 
         }, 
         { 
          "value": "2450", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T23:30:00.000-05:00" 
         }, 
         { 
          "value": "2450", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-05T23:45:00.000-05:00" 
         }, 
         { 
          "value": "2450", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T00:00:00.000-05:00" 
         }, 
         { 
          "value": "2470", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T00:15:00.000-05:00" 
         }, 
         { 
          "value": "2470", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T00:30:00.000-05:00" 
         }, 
         { 
          "value": "2470", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T00:45:00.000-05:00" 
         }, 
         { 
          "value": "2450", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T01:00:00.000-05:00" 
         }, 
         { 
          "value": "2450", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T01:15:00.000-05:00" 
         }, 
         { 
          "value": "2470", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T01:30:00.000-05:00" 
         }, 
         { 
          "value": "2470", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T01:45:00.000-05:00" 
         }, 
         { 
          "value": "2470", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T02:00:00.000-05:00" 
         }, 
         { 
          "value": "2490", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T02:15:00.000-05:00" 
         }, 
         { 
          "value": "2490", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T02:30:00.000-05:00" 
         }, 
         { 
          "value": "2500", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T02:45:00.000-05:00" 
         }, 
         { 
          "value": "2500", 
          "qualifiers": [ 
           "P" 
          ], 
          "dateTime": "2017-11-06T03:00:00.000-05:00" 
         } 
        ], 
        "qualifier": [ 
         { 
          "qualifierCode": "P", 
          "qualifierDescription": "Provisional data subject to revision.", 
          "qualifierID": 0, 
          "network": "NWIS", 
          "vocabulary": "uv_rmk_cd" 
         } 
        ], 
        "qualityControlLevel": [], 
        "method": [ 
         { 
          "methodDescription": "", 
          "methodID": 66577 
         } 
        ], 
        "source": [], 
        "offset": [], 
        "sample": [], 
        "censorCode": [] 
       } 
      ], 
      "name": "USGS:01129500:00060:00000" 
     } 
    ] 
}, 
"nil": false, 
"globalScope": true, 
"typeSubstituted": false 

}

어떻게 레이블 "값"으로 모든 정보를 잡고 난 다음에 기능을 수행 할 수있는 데이터 구조로이 번호를 저장합니까?

감사

+0

올바른 내가 그 정보를, 더 깊이 중첩 된 단지 값이 필요하지 않습니다. 각 값의 시간 소인과 그 다음 값을 갖는 2 차원 배열을 갖는 것이 유익합니다. 이 일을 쉽게 처리 할 수있는 PHP 라이브러리가 있어야합니다. – Mactate10

답변

1

그 질문은 바쁜 분석 자체가 큰되지 않습니다 JSON과는 아무 상관이 없습니다. $data['value']['timeSeries'][0]['values'][0]['value']을 반복하고 필요한 모든 것을 추출 할 수 있습니다.

$data = json_decode($json, true); 
$t = []; 
foreach ($data['value']['timeSeries'][0]['values'][0]['value'] as $item) { 
    $t[] = $item['value']; 
} 

다른 키가 필요하면 json 데이터를보고 루프를 수정하십시오. 고유 키가 필요하면 $t var에 array_unique을 사용하십시오.

+0

완벽한, 감사합니다. – Mactate10