我刚刚开始使用 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/