Maison > développement back-end > tutoriel php > 有关 json_encode 函数中的 JSON_NUMERIC_CHECK 参数的困惑

有关 json_encode 函数中的 JSON_NUMERIC_CHECK 参数的困惑

WBOY
Libérer: 2016-06-06 20:28:46
original
2313 Les gens l'ont consulté

REST API 返回的数据,有些字段是字符串,而有些数据是数字。因为查询mysql返回的数据,全部都是加了双引号的(都当成字符串)。我希望的是数字不要加双引号,而字符串就加上双引号。所以在进行json_encode() 时,加了参数 JSON_NUMERIC_CHECK(参考)

但是问题来了:加了这个参数后,它会把 decimal 类型的 价格 price 比如:20.00 ,后面的小数点去掉了,还有一个就是,比如说它也会把比如身份证号转换成了科学计数法了。

比如,转换前:

<code>{
    "username": "LiLi", 
    "passowrd": "123456", 
    "age": "25",
    "card_no": "440901197709194316", 
    "balance": "20.00"
}
</code>
Copier après la connexion
Copier après la connexion

使用 json_encode($data, JSON_NUMERIC_CHECK),转换后:

<code>{
    "username": "LiLi", 
    "passowrd": 123456, 
    "age": 25,
    "card_no": 4.4090119770919e+17, 
    "balance": 20
}
</code>
Copier après la connexion
Copier après la connexion

我希望的是:card_no 和 balance 都要完整显示,而不是被截取了(比如,它们可以保持为字符串这样),但是像 password 这些数字字段依然会被转换为数字显示(双引号去掉)。目前有没有比较好的解决办法??

如下是我希望的结果:

<code>{
    "username": "LiLi", 
    "passowrd": 123456, 
    "age": 25,
    "card_no": 440901197709194316, 
    "balance": 20.00
}
</code>
Copier après la connexion
Copier après la connexion

谢谢~~!!

回复内容:

REST API 返回的数据,有些字段是字符串,而有些数据是数字。因为查询mysql返回的数据,全部都是加了双引号的(都当成字符串)。我希望的是数字不要加双引号,而字符串就加上双引号。所以在进行json_encode() 时,加了参数 JSON_NUMERIC_CHECK(参考)

但是问题来了:加了这个参数后,它会把 decimal 类型的 价格 price 比如:20.00 ,后面的小数点去掉了,还有一个就是,比如说它也会把比如身份证号转换成了科学计数法了。

比如,转换前:

<code>{
    "username": "LiLi", 
    "passowrd": "123456", 
    "age": "25",
    "card_no": "440901197709194316", 
    "balance": "20.00"
}
</code>
Copier après la connexion
Copier après la connexion

使用 json_encode($data, JSON_NUMERIC_CHECK),转换后:

<code>{
    "username": "LiLi", 
    "passowrd": 123456, 
    "age": 25,
    "card_no": 4.4090119770919e+17, 
    "balance": 20
}
</code>
Copier après la connexion
Copier après la connexion

我希望的是:card_no 和 balance 都要完整显示,而不是被截取了(比如,它们可以保持为字符串这样),但是像 password 这些数字字段依然会被转换为数字显示(双引号去掉)。目前有没有比较好的解决办法??

如下是我希望的结果:

<code>{
    "username": "LiLi", 
    "passowrd": 123456, 
    "age": 25,
    "card_no": 440901197709194316, 
    "balance": 20.00
}
</code>
Copier après la connexion
Copier après la connexion

谢谢~~!!

其实 你的
Model提交回服务器 不管POST FromData或者JSON什么方式 都变成了字符串
一般我都每个Model对应一个format方法 手工转换为我自己一开始设置的格式~

设置pdo$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal