7

我尝试将一行 mysql 查询添加到 JSON whit php 中。我使用这段代码:

public function lugaresCercanos($lng, $lat, $distance){
$result=mysql_query("SELECT nombre, distancia FROM Lugar ORDER BY distancia ASC");
$info=array();
    while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
        array_push($info,$row);
    }
    return json_encode($info);

这会返回一个 JSONObject,但我不确定。

    class resultado_final {
public $logstatus = "";
public $lugares_cercanos = "";}

$result_final = new resultado_final();
if($db->login($usuario,$passw)){
$result_final->logstatus = "0";}else{
$result_final->logstatus = "1";}
$result_final->lugares_cercanos = $lista;
echo json_encode($result_final);

此代码打印:

{"logstatus":"1","lugares_cercanos":"[{\"nombre\":\"Rio Amazonas\",\"distancia\":\"5119.000\"},{\"nombre\":\"Swissotel \",\"distancia\":\"5823.000\"},{\"nombre\":\"Laguna de Yaguarcocha\",\"distancia\":\"71797.000\"}]"}

为什么查询的行用反斜杠分隔?如何删除反斜杠?非常感谢!

4

5 回答 5

16

\ 用于转义作为响应一部分的引号 (")。

用来stripslashes()剥离这些。

当用引号括起来的字符串包含引号时,它们必须被转义。php 中的转义字符是\.

于 2013-01-08T06:00:52.890 回答
13

尝试

json_encode($arr, JSON_UNESCAPED_SLASHES);

或者

echo str_replace('\/','/',json_encode($mydatas));

(如果 unescape 不起作用) http://php.net/manual/en/function.json-encode.php

于 2013-01-08T06:02:22.143 回答
6

停止对数据进行双重编码。将所有内容放在一个大型结构中,然后对其进行编码。

于 2013-01-08T06:01:29.227 回答
1

如果有人想删除反斜杠并漂亮地打印 JSON 数据,可以使用以下命令:

json_encode($my_array, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
于 2018-06-16T04:15:03.490 回答
0

谢谢,我解决了。

$info=array();
    while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
        array_push($info,$row);
    }
    $info;
$result_final->lugares_cercanos = $info;

打印这个:

{"logstatus":"1","lugares_cercanos":[{"nombre":"Rio Amazonas","distancia":"5119.000"}{"nombre":"Swissotel Quito","distancia":"5823.000"}{"nombre":"Laguna de Yaguarcocha","distancia":"71797.000"}]}
于 2013-01-08T19:13:10.130 回答