Php 如何将请求获取到json数据文件中
我想使用html GET请求加载json文件中的数据:Php 如何将请求获取到json数据文件中,php,json,Php,Json,我想使用html GET请求加载json文件中的数据: http://www.example.com/xxx/?id={device}&time={time}&snr={snr}&station={station}&lat={lat}&lng={lng}&rssi={rssi}&data={data}&avgSnr={avgSnr} 服务器端是my index.html文件: 演示模型 您正在手动编译JSON,这只是自找麻烦。
http://www.example.com/xxx/?id={device}&time={time}&snr={snr}&station={station}&lat={lat}&lng={lng}&rssi={rssi}&data={data}&avgSnr={avgSnr}
服务器端是my index.html文件:
演示模型
您正在手动编译JSON,这只是自找麻烦。使用json\u encode
它将为您带来很多好处:
<?php
$data = [
'data' => [
'id' => $_GET['id'],
'data' => $_GET['data'],
'from' => $_GET['station'],
'lat' => $_GET['lat'],
'lng' => $_GET['lng']
]
];
if ( $fl = fopen('data.json','a')) {
fwrite($fl, json_encode($data));
fclose($fl);
} else {
echo 'Cannot open file';
}
?>
来自@Farkie的初始代码。您可能还希望清理并验证是否设置了所有的_GET索引,如果没有,也会为它们抛出一个默认值
<?php
$data = array(
'id' => $_GET['id'],
'time' => $_GET['time'],
'snr' => $_GET['snr'],
'from' => $_GET['station'],
'lat' => $_GET['lat'],
'lng' => $_GET['lng'],
'rssi' => $_GET['rssi'],
'data' => $_GET['data'],
'avgSnr' => $_GET['avgSnr'],
);
if( $fl = fopen( 'data.json', 'a+' ) ){
$stats = fstat( $fl );
if( $stats['size'] ){
$contents = fread( $fl, $stats['size'] );
$collection = @json_decode( $contents, true );
$collection = isset( $collection['data'] ) && is_array( $collection['data'] )
? $collection
: array( 'data' => array() );
} else {
$collection = array( 'data' => array() );
}
$collection['data'][] = $data;
ftruncate( $fl, 0 );
fwrite( $fl, json_encode( $collection ) );
fclose( $fl );
} else {
echo 'Cannot open file';
}
更改了代码并使用URL{device}&data={data}&station={station}&lat={lat}&lng={lng}进行了测试,但在json数据文件中没有发布任何信息来编辑答案。写入该文件的权限可能有问题。请检查当前目录的权限。另外请注意,如果您想将此文件用作数据的集合,它将不起作用。你基本上会有这样的重复:{“数据”:{“id”:“{device}”,“data”:“{data}”,“from”:“{station}”,“lat”:“{lat}”,“lng”:“{lng}”}{“data”:{“id”:“{device}”,“data”:“{data}”,“from”:“{station}”,“lat lat”:“{lat lat lat}”,“lng”:“{lng}}}从技术上讲,你可以在新线上分开,但还是有点尴尬