我想将经度和纬度值传递给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";
}
答案 0 :(得分:1)
你要编码两次。尝试更改
$jsonObject = json_encode($params);
简单地
$jsonObject = $params;
要删除引号,请转换PHP字符串:
$params = array('lat' => (float)$_POST['lat'], 'lng' => (float)$_POST['lng']);
答案 1 :(得分:0)
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两次..首先你将它编码为生成反斜杠的字符串,然后再对其进行编码..
答案 2 :(得分:0)
你编码$ 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";
}