Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何处理包含数字字符串的JSON_Javascript_Php_Mysql_Json - Fatal编程技术网

Javascript 如何处理包含数字字符串的JSON

Javascript 如何处理包含数字字符串的JSON,javascript,php,mysql,json,Javascript,Php,Mysql,Json,我使用以下PHP代码从Web服务器提取JSON数据 $result = mysql_query("select lat,lng from gpsdata limit 10"); $rows = array(); while($r = mysql_fetch_assoc($result)) { $rows[] = $r; } print json_encode($rows); 我正在使用Javascript来获取这个数据 $.getJSON('returngps.php').d

我使用以下PHP代码从Web服务器提取JSON数据

 $result = mysql_query("select lat,lng from gpsdata limit 10");
 $rows = array();
 while($r = mysql_fetch_assoc($result)) {
  $rows[] = $r;
 }

 print json_encode($rows);
我正在使用Javascript来获取这个数据

 $.getJSON('returngps.php').done(function(data) {
    for (var i=0;i< data.length;i++ ){
    console.log(data[i]);
    }
  }
我想与之合作的是:

   {lat: 53.399793333333, lng: -6.3844516666667}
有什么方法可以转换它吗?

尝试使用:

尝试使用:


问题是从MySQL到PHP检索数字会导致它们被转换为字符串。(我讨厌PHP和MySQL之间的关系不尊重类型!)然后,JSON序列化适当地维护了字符串类型

因此,在检索时需要将值强制转换为float。这将导致JSON序列化将值视为数字而不是字符串,并且在接收JS时不需要任何荒谬的字符串操作或关于数据类型的假设

$result = mysql_query("select lat,lng from gpsdata limit 10");
$rows = array();
while($r = mysql_fetch_assoc($result)) {
    $r['lat'] = (float) $r['lat'];
    $r['lon'] = (float) $r['lon'];

    $rows[] = $r;
}

问题是从MySQL到PHP检索数字会导致它们被转换为字符串。(我讨厌PHP和MySQL之间的关系不尊重类型!)然后,JSON序列化适当地维护了字符串类型

因此,在检索时需要将值强制转换为float。这将导致JSON序列化将值视为数字而不是字符串,并且在接收JS时不需要任何荒谬的字符串操作或关于数据类型的假设

$result = mysql_query("select lat,lng from gpsdata limit 10");
$rows = array();
while($r = mysql_fetch_assoc($result)) {
    $r['lat'] = (float) $r['lat'];
    $r['lon'] = (float) $r['lon'];

    $rows[] = $r;
}


JSON字符串只是一个字符串,无论您对字符串做什么,您都可以对JSON做什么。只需执行
data[i].lat=parseFloat(data[i].lat)
OP想要删除双引号,我想lat&lng值是存储为字符串还是浮点数?我不是php程序员,但我希望它能将数字编码为数字而不是字符串。我很惊讶没有人提到mysql_*不受欢迎,用户应该使用PDO或mysqli。JSON字符串只是一个字符串,不管你对字符串做什么,你也可以对JSON做什么。只要做
data[I].lat=parseFloat(data[I].lat)
OP想删除双引号,我想lat&lng值是以字符串还是浮点数的形式存储的?我不是php程序员,但我希望它将数字编码为数字而不是字符串。我很惊讶没有人提到mysql_*不受欢迎,用户应该使用PDO或mysqli。我建议不要使用此解决方案,因为它需要接收代码对来自远程源的数据进行假设。我建议不要使用这是一个解决方案,因为它需要接收代码对来自远程源的数据进行假设。但是@JAAulde您不认为,它会增加API响应时间,因为在一个大数组上循环可能会挂起。@VishalGupta我听到了您的说法,但在这种情况下,绝对不是——在一百万行上输入2个值不会花那么长时间。我相信在这之前,还需要解决许多其他性能方面的问题。我坚信,在这种情况下,由于MySQL/PHP在一起工作时不尊重类型,所以PHP必须成为类型的权威。另外,请注意,必须执行转换。PHP或者JS…或者您可以在查询中使用
CAST(lat为DECIMAL(15,13))
让MYSQL进行所有数据转换,假设它以文本或某些变量的varchar形式存储在该数据库中sort@RiggsFolly这会导致它在PHP中显示为浮点/十进制吗?如果是这样的话,这是非常可取的!根据我的经验,MySQL/PHP总是以PHP获取字符串的方式进行交互,而不管查询中有什么内容:(@JAAulde不是绝对肯定的,需要对它进行测试,但是@JAAulde你不认为,它会增加API响应时间,因为在一个大数组上循环可能会挂起。@VishalGupta我听到了你的意思,但在这种情况下,绝对不是——在一百万行上输入2个值仍然不会花那么长时间。我相信在性能的许多其他方面在此之前需要先解决ould。我坚信,在这种情况下,由于MySQL/PHP在一起工作时不尊重类型,因此PHP必须对类型具有权威性。另外,请注意,必须要执行转换。PHP或JS…或者可以使用
CAST(lat为十进制(15,13))
在查询中,让MYSQL执行所有数据转换,假设它以文本或某些变量的varchar形式存储在该数据库中sort@RiggsFolly这会导致它在PHP中显示为浮点/十进制吗?如果是,这是非常可取的!根据我的经验,MySQL/PHP总是进行交互,以便PHP获取字符串,而不管查询中包含什么:(@JAAulde不是绝对阳性,需要检测一下
$result = mysql_query("select lat,lng from gpsdata limit 10");
$rows = array();
while($r = mysql_fetch_assoc($result)) {
    $r['lat'] = (float) $r['lat'];
    $r['lon'] = (float) $r['lon'];

    $rows[] = $r;
}