php - Silex - app->json() 将整数数据作为字符串返回

标签 php mysql json silex

我刚刚开始使用 Silex 来帮助我构建一个可从我的 MySQL 数据库返回数据的 RESTful API。以前在使用 php 和 mysql 时,我注意到 MySQL 会在我的 json_encode() 函数中将整数作为字符串返回。它会在我所有的整数值周围加上引号。我能够解决这个问题的唯一方法是将 JSON_NUMERIC_CHECK 传递给 json_encode 函数:

return json_encode($array, JSON_NUMERIC_CHECK);

工作得很好,满足了我的需要。现在我正在使用 silex,我一直在使用它的内置 json 函数从我的 Controller 返回值。我注意到我遇到了同样的问题,即整数作为带有引号的字符串返回。

$app->get('/suppliers', function () use ($app) {
    $sql = "SELECT * FROM suppliers";
    $suppliers = $app['db']->fetchAll($sql);

    return $app->json(array('suppliers' => $suppliers));
});

供应商有一个 supplier_id 字段,它是一个整数,但它在 json 数据中作为字符串返回。我尝试在我的数组之后将 JSON_NUMERIC_CHECK 传递给 $app->json() 函数,但会得到一个 InvalidArguementException

我确实发现我可以使用 json_encode() php 函数而不是使用 $app->json() 函数,它会起作用。像这样:

$app->get('/suppliers', function () use ($app) {
    $sql = "SELECT * FROM suppliers";
    $suppliers = $app['db']->fetchAll($sql);

    //return $app->json(array('suppliers' => $suppliers));
    return json_encode(array('suppliers' => $suppliers), JSON_NUMERIC_CHECK);
});

有什么理由不这样做而不是使用 silex $app->json() 函数吗?有更好的方法吗?

最佳答案

尝试使用 setEncodingOptions

return $app->json($var, Response::HTTP_OK)->setEncodingOptions(JSON_NUMERIC_CHECK);

关于php - Silex - app->json() 将整数数据作为字符串返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35142601/

相关文章:

php - 如何将数据插入到mysql php代码中

PHP - 将字符串添加到数组

javascript - JSON 数据未显示

php - 使用 PHP Response 来存储/使用数据

PHP - 过滤电子邮件正文,删除回复引号

php - 调试休眠的 MySQL 连接

php - 如何在自定义 wordpress 主题上添加 Logo

MySQL AND条件括号不起作用

javascript - JSON 可以工作,但在控制台中打印错误

javascript - 根据 html 选择值中的数据为 FullCalendar 提供 json feed url