2017-02-21 18 views
0

Я пытаюсь получить данные из json-файла, проанализировать его и добавить данные из него в базу данных. Я использую как базу данных, оракул. Я получаю ошибки:Получить данные из файла JSON в php

enter image description here

Это мой JSON файл

{ 
"data": { 
    "gps": [ 
     { "location": "45.778123,24.151165"  
     }, 
     { "location": "45.7875116,24.1549801"    
     } 
    ] 
} 

Это мой PHP-файл

<?php 
     $file = 'JSONdata.json'; 
     $json = file_get_contents($file,0,null,null); 
     $obj = json_decode($json,true); 
     $data = $obj->data->gps; 

     include 'connection.php'; 

     function insert_data($connname, $conn) 
     { 
      foreach ($data as $post) { 
      $stmt = oci_parse($conn, "insert into GPSLOGS 
        values('".$post->location."')"); 
      oci_execute($stmt, OCI_DEFAULT); 
      echo "$connname inserted row without committing<br>\n"; 
      } 
     } 

     insert_data('c1', $conn); 
    ?> 

Вы знаете, что это я делать не так? И почему он продолжает получать эти ошибки? Я также попытался использовать другой формат файла JSON и проанализировать его по-разному, но он продолжает получать те же ошибки.

.json 
     [{ "gps": "45.778123,24.151165"},{"gps": "45.7875116,24.1549801"}] 

.php 
    $file = 'JSONdata.json'; 
    $json = file_get_contents($file,0,null,null); 
    $obj = json_decode($json,true);  
     foreach($obj as $item) 
     {  echo $item['gps'];} 

ответ

2
$obj = json_decode($json,true); 
$data = $obj->data->gps; 

возвращает данные в виде массива, а не объект. Удалите второй аргумент из json-декодирования, и все должно работать.

сделать

$obj = json_decode($json); 
$data = $obj->data->gps; 
+0

Спасибо. Это сработало –