相关疑难解决方法(0)

处理PHP中FQL返回的大用户ID

我正在使用FQL从Facebook检索用户列表.为了保持一致性,我将结果作为JSON.这会导致问题 - 因为返回的JSON将用户ID编码为数字,json_decode()会将这些数字转换为浮点值,因为有些数字太大而无法放入int中; 当然,我需要这些ID作为字符串.

由于json_decode()在没有接受任何行为标志的情况下做了自己的事情,所以我很茫然.有关如何解决此问题的任何建议?

php json facebook facebook-fql

19
推荐指数
4
解决办法
7309
查看次数

json_decode和json_encode长整数而不丢失数据

如PHP文档中所述,当json_decode包含长整数的数据结构时,它们将被转换为浮点数.解决方法是使用JSON_BIGINT_AS_STRING,它将它们保留为字符串.当json_encode输入这些值时,JSON_NUMERIC_CHECK会将这些数字编码回大整数:

$json  = '{"foo":283675428357628352}';
$obj   = json_decode($json, false, JSON_BIGINT_AS_STRING);
$json2 = json_encode($obj, JSON_NUMERIC_CHECK);
var_dump($json === $json2); // true
Run Code Online (Sandbox Code Playgroud)

使用此方法进行正确的数据往返很容易出错.如果属性包含'123'一个应该保留字符串的数字字符串,它将被编码为整数.

我想从服务器获取一个对象,修改一个属性,然后将整个数据结构放回去.我需要保留原始类型.我不想维护我正在操纵的属性.

这有什么真正的解决方法吗?PHP不再存在大的问题,但json_decode例程似乎已经过时了.

php parsing json numbers bigint

6
推荐指数
1
解决办法
3703
查看次数

标签 统计

json ×2

php ×2

bigint ×1

facebook ×1

facebook-fql ×1

numbers ×1

parsing ×1