REST API 返回的資料,有些欄位是字串,而有些資料是數字。因為查詢mysql返回的資料,全部都是加了雙引號的(都當成字串)。我希望的是數字不要加雙引號,而字串就加上雙引號。所以在進行
json_encode()
時,加了參數
JSON_NUMERIC_CHECK
(參考)
但是問題來了:加了這個參數後,它會把 decimal 類型的 價格 price 比如:20.00 ,後面的小數點去掉了,還有一個就是,比如說它也會把比如社會安全號碼轉換成了科學計數法了。
比如,轉換前:
{ "username": "LiLi", "passowrd": "123456", "age": "25", "card_no": "440901197709194316", "balance": "20.00"}
使用 json_encode($data, JSON_NUMERIC_CHECK)
,轉換後:
{ "username": "LiLi", "passowrd": 123456, "age": 25, "card_no": 4.4090119770919e+17, "balance": 20}
我希望的是:card_no 和 balance 都要完整顯示,而不是被截取了(比如,它們可以保持為字串這樣),但是像 password 這些數字欄位依然會被轉換為數字顯示(雙引號去掉)。目前有沒有比較好的解決辦法??
如下是我希望的結果:
{ "username": "LiLi", "passowrd": 123456, "age": 25, "card_no": 440901197709194316, "balance": 20.00}
謝謝~~!!
回複內容:
REST API 返回的資料,有些欄位是字串,而有些資料是數字。因為查詢mysql返回的資料,全部都是加了雙引號的(都當成字串)。我希望的是數字不要加雙引號,而字串就加上雙引號。所以在進行json_encode()
時,加了參數 JSON_NUMERIC_CHECK
(參考)
但是問題來了:加了這個參數後,它會把 decimal 類型的 價格 price 比如:20.00 ,後面的小數點去掉了,還有一個就是,比如說它也會把比如社會安全號碼轉換成了科學計數法了。
比如,轉換前:
{ "username": "LiLi", "passowrd": "123456", "age": "25", "card_no": "440901197709194316", "balance": "20.00"}
使用 json_encode($data, JSON_NUMERIC_CHECK)
,轉換後:
{ "username": "LiLi", "passowrd": 123456, "age": 25, "card_no": 4.4090119770919e+17, "balance": 20}
我希望的是:card_no 和 balance 都要完整顯示,而不是被截取了(比如,它們可以保持為字串這樣),但是像 password 這些數字欄位依然會被轉換為數字顯示(雙引號去掉)。目前有沒有比較好的解決辦法??
如下是我希望的結果:
{ "username": "LiLi", "passowrd": 123456, "age": 25, "card_no": 440901197709194316, "balance": 20.00}
謝謝~~!!
其實 你的
Model提交回伺服器 不管POST FromData或者JSON什麼方式 都變成了字串
一般我都每個Model對應一個format方法 手工轉換為我自己一開始設定的格式~
設定pdo$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);