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

标签 javascript php mysql json

我正在使用以下 PHP 代码从网络服务器中提取 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"}

我想处理的是:

   {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;
}

关于javascript - 如何处理包含数字字符串的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38724768/

相关文章:

php - 在 laravel 中使用外键保存对象

mysql - sql 查询给出错误的计数

Mysql错误代码1265 : Data truncated for column after increasing varchar column size

php - 如何在具有拉丁排序规则的数据库和具有utf8排序规则的表中插入utf-8格式

javascript - 为什么我有时需要使用 JSON.stringify 有时不需要

javascript - 通过 AJAX 从 JSON 编码获取数组

php - 从附加的 html 内容生成 pdf

javascript - 仅当通过该查询字符串访问时才保留 URL 上的查询字符串

javascript - 在不兼容的接收器上调用方法 RegExp.prototype.exec

javascript - 找到一个空数组并修改json