我正在使用以下 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/