我想将经度和纬度值传递给 json 文件。我当前拥有的代码转义了值并添加了引号。
示例 JSON 输出{"votes":["{'"lat'":'"51.426799'",'"lng'":'"-0.3313419999999496'"},{'"lat'":'"52.30897'",'"lng'":'"-1.9409359999999651'"}"]}
我需要删除反斜杠和引号。这是我正在使用的 PHP:
if (isset($_POST['lat']) && isset($_POST['lng'])) {
$params = array('lat' => $_POST['lat'], 'lng' => $_POST['lng']);
$jsonObject = json_encode($params);
$json = file_get_contents('my_json_data.json');
if(empty($json)){
$jsonObject = json_encode(array('votes' => [$jsonObject]));
file_put_contents('my_json_data.json', $jsonObject);
}else{
$json = json_decode($json, true);
$newJson = $json['votes'][0] . "," . $jsonObject;
$jsonObject = json_encode(array('votes' => [$newJson]));
file_put_contents('my_json_data.json', $jsonObject);
}
}
else {
echo "Noooooooob";
}
你编码了两次。尝试更改
$jsonObject = json_encode($params);
简单地
$jsonObject = $params;
要删除引号,请强制转换 PHP 字符串:
$params = array('lat' => (float)$_POST['lat'], 'lng' => (float)$_POST['lng']);
if (isset($_POST['lat']) && isset($_POST['lng'])) {
$params = array('lat' => $_POST['lat'], 'lng' => $_POST['lng']);
$json = file_get_contents('my_json_data.json');
if(empty($json)){
$params["votes"] = 1;
$jsonObject = json_encode(array('votes' => $params));
file_put_contents('my_json_data.json', $jsonObject);
}else{
$json = json_decode($json, true);
$newJson = $json['votes']++;
$jsonObject = json_encode($json);
file_put_contents('my_json_data.json', $jsonObject);
}
}
else {
echo "Noooooooob";
}
尝试重置my_json_data.json文件。
edit1:好的,你用json_encode两次..首先你把它编码成字符串,使反斜杠,然后你再次编码它。
你对
$params编码两次。
首先:$jsonObject = json_encode($params);
,所以$jsonObject包含一个 json 编码的$params(作为字符串)
将此字符串放到此处的投票数组后:
$jsonObject = json_encode(array('votes' => [$jsonObject]));
或这里
$newJson = $json['votes'][0] . "," . $jsonObject;
再次将其编码为字符串,而不是数组后:
$jsonObject = json_encode(array('votes' => [$newJson]));
我想你想这样做吗:
if (isset($_POST['lat']) && isset($_POST['lng'])) {
$params = array('lat' => $_POST['lat'], 'lng' => $_POST['lng']);
$json = @file_get_contents('my_json_data.json');
if(empty($json)){
$jsonObject = json_encode(array('votes' => [$params]));
file_put_contents('my_json_data.json', $jsonObject);
}else{
$json = json_decode($json, true);
$json['votes'][] = $params;
file_put_contents('my_json_data.json', json_encode($json));
}
}
else {
echo "Noooooooob";
}