PHP JSON API-检测返回值的数据类型



im正在处理返回json_encoded多维数组的PHP JSON API。由于PHP是一种弱类型语言,我对客户端返回的数据类型有一些问题,例如整数作为字符串返回。

响应示例

json编码前

array() {
["users"]=>
array() {
["id"]=>
string(3) "983"
["email"]=>
string(28) "xxx.xxx@xxx.xxx"
["username"]=>
string(8) "xxx"
["verified"]=>
string(1) "2"
["tutorial_completed"]=>
string(1) "1"
}
["companies"]=>
array() {
["id"]=>
string(3) "170"
["name"]=>
string(0) "xxx"
["trusted"]=>
string(1) "1"
}
}

json编码后

data: {
users: {
id: "983",
email: "xxx@xxx.xxx",
username: "xxx",
verified: "2",
tutorial_completed: "1",
},
companies: {
id: "170",
name: "xxx",    
trusted: "1",
}
}

我正在从MySQL table获取数据。这些值基本上是按原样取的。

一种有效的解决方案是检查每个键,然后按intval()floatval()强制转换数值,但这意味着对于更大的数组需要付出巨大的努力,而且该解决方案缺乏灵活性。

它们是否是自动检测数据类型是否也可以是数值的平滑方法?如果是,请强制转换?

问题是:当您从PHP从MySQL数据库中提取时,无论数据库中的字段类型如何,结果中的字段都是字符串类型或NULL。这与MYSQL驱动程序有关。

解决方案:您需要将数值自己强制转换为数组中所需的类型。或者,当您转换为json时,您可以简单地使用:

$encoded = json_encode($data, JSON_NUMERIC_CHECK);

数值字段将自动为您进行强制转换。

您可以在从mysql获取数据的循环中使用is_int()函数,并在制作数组时使用返回true的intval(),希望它能帮助

最新更新