【问题标题】:How to remove double qoutes from json data如何从json数据中删除双引号
【发布时间】:2016-12-06 10:37:18
【问题描述】:

我正在处理cordova。从php 脚本我生成了json 数据。下面是我的json数据

 "11111111": [
    { "x": "2016-01-25 12:58:52", "y": "25.22" },
    { "x": "2016-01-26 13:33:23", "y": "30.14" },
    { "x": "2016-01-27 13:49:18", "y": "35.58" },
    { "x": "2016-01-29 13:55:01", "y": "40.25" },
    { "x": "2016-01-30 14:00:15", "y": "47.25" },
    { "x": "2016-01-31 15:50:15", "y": "14.25" },
    { "x": "2016-02-01 16:16:15", "y": "20.25" },
    { "x": "2016-02-02 17:49:15", "y": "5.25" },
    { "x": "2016-02-03 18:20:15", "y": "77.25" },
    { "x": "2016-02-04 19:30:15", "y": "65.25" }
],

但我想从y 数据中删除double quotes,即

 "11111111": [
    { "x": "2016-01-25 12:58:52", "y": 25.22 },
    { "x": "2016-01-26 13:33:23", "y": 30.14 },
    { "x": "2016-01-27 13:49:18", "y": 35.58 },
    { "x": "2016-01-29 13:55:01", "y": 40.25 },
    { "x": "2016-01-30 14:00:15", "y": 47.25 },
    { "x": "2016-01-31 15:50:15", "y": 14.25 },
    { "x": "2016-02-01 16:16:15", "y": 20.25 },
    { "x": "2016-02-02 17:49:15", "y": 5.25 },
    { "x": "2016-02-03 18:20:15", "y": 77.25 },
    { "x": "2016-02-04 19:30:15", "y": 65.25 }
],

更新代码:

下面是我生成json的脚本

if($result)
{
while($row = mysqli_fetch_array($result))
{
    $serial = $row['Device_Serial_Number'];
    $x = $row['Data_Datetime'];
    $y = $row['Energy_kwh'];

    if(!isset($data[$serial]))
    {
        $data[$serial] = [];
    }
    $data[$serial][] = ['x' => $x , 'y' => $y];
}
mysqli_free_result($result);
}

$json = json_encode($data, JSON_PRETTY_PRINT);

echo "var jsonData = " . $json;

我搜索了很多文章,但没有找到任何好的解决方案

任何帮助将不胜感激

【问题讨论】:

  • 您应该看看$y 的创建位置。它目前是 PHP 中的一个字符串,因此最好的方法是在创建时更改它。目前您不共享与创建$x$y 相关的代码。
  • 一个快速的解决方法是将它转换为浮动,以防您从数据库中获取字符串:'y' => (float) $y
  • @Sirko 请查看更新
  • @jeroen 是的,它正在工作:)

标签: javascript php json cordova


【解决方案1】:

如果你从数据库中得到一个字符串或一个$_POST 值,你可以将它转换为浮点数:

$data[$serial][] = ['x' => $x , 'y' => (float) $y];

【讨论】:

  • 工作完美:)
【解决方案2】:

当你创建json数据时,$y是float数据类型,当你的php脚本生成数据时你应该确保float数据类型的精度没有被string替换

您可以使用 json_encode 选项

JSON_PRESERVE_ZERO_FRACTION

每个 php 版本都不同 你应该检查手册

http://php.net/manual/en/json.constants.php

但是如果你的cordova中的setter getter可以处理它并不重要,你可以在你的应用程序从你的php脚本中获取数据时强制转换为float,即使你的脚本将它作为字符串返回。

抱歉英语不好

【讨论】:

    猜你喜欢
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2021-11-20
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多