从php中获取JSON文件中的数据

时间:2017-02-21 21:27:47

标签: php json oracle

我正在尝试从json文件中获取数据,解析它并将数据从中添加到数据库中。我用作数据库,oracle。 我收到了错误:

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'];}  

1 个答案:

答案 0 :(得分:2)

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

以数组的形式返回数据,而不是对象。从json decode中删除第二个参数,一切都应该有效。

制作

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