我知道PHP不支持無符號64位整數。JSON編碼無符號64位整數在PHP中
但是我只需從通過PDO查詢一個MySQL表中讀出帶符號的64位整數值,並通過將它們傳遞到客戶端(而不執行任何計算或比較); PHP頁面正在向客戶端發佈一個非常簡單的REST接口,並且應該只將查詢結果輸出爲JSON數據。
現在,只要它們是63位寬(無符號),PDO查詢就會返回未觸及的整數,但當表中的原始值設置爲第64位時,PDO驅動程序會將其轉換爲字符串(我已設置PDO::ATTR_STRINGIFY_FETCHES
屬性爲false,因爲我希望類型儘可能保留)。
當我打電話json_encode()
功能,在相關領域得到同樣的待遇:他們成爲字符串時,他們超過63位的寬度。
我不想讓他們在JSON字符串輸出,因爲它需要「破」,在客戶端代碼的變化,讓他們在解碼處理JSON字符串到ulong的轉換。
有沒有辦法以某種方式定製json_encode行爲以將它們作爲「UINT64」?
我看了JsonSerializable,但它似乎無法解決我的問題。
你可以使用一個數學擴展到支持無符號64個整數在PHP中,如果沒有:http://php.net/manual/en/intro.gmp.php(這是一條評論,因爲這是不是你的問題的答案)。至於你的問題:是的,你可以自定義json編碼,請參閱:http://php.net/manual/en/class.jsonserializable.php –
檢查此答案https:// stackoverflow。 com/questions/30589965/json-decode-and-json-encode-long-integers-without-loosing-data – Eimsas
@KIKOSoftware我不認爲jsonSerializable是一個解決方案:這個類只允許你選擇必須序列化的東西,而不是如何。 –