這問題是在處理facebook介接會遇到的,facebook所傳的json資料有很多使用到bigint,
但是json_decode遇到bigint時會轉成float輸出,雖然可以指定預到大數時自動當成文字,
可是此功能只支援於php 5.4之後的版本,因此不一定都能通用。
我想到的做法如下:
/**
將bigint當文字輸出
*/
function json_big_decode($code , $assoc = true) {
return PHP_VERSION >= 5.4 // 此版本後才開始支援 JSON_BIGINT_AS_STRING
? json_decode( $code, $assoc, 512, JSON_BIGINT_AS_STRING)
: json_decode(
preg_replace('/([{|,]\s*"[^"]+"\s*:\s*)(-?[\d]{10,})/', '\\1"\\2"', $code)
, $assoc
)
;
}
/**
將資料文字中大數轉為bigint輸出
*/
function json_big_encode($data) {
return preg_replace('/([{|,]\s*"[^"]+"\s*:\s*)"(-?\d{1,20})"/', '\\1\\2', json_encode($data));
}
訂閱:
張貼留言 (Atom)
[Unity] Odin Inspector DateTime 時間屬性繪製
Odin Inspector 是一個有名的Unity Inspector Plugin,但沒有為 DateTime 建立可編輯的可視化介面,這邊簡單提供一個可用的方法 。 Odin Inspector 版本 : 3.3.1.14
-
IP Messenger 4.99r3 繁體中文版 介紹:方便區網內傳輸的小工具,又名飛鴿傳書。 支援文字、圖片、檔案、資料夾點對點傳輸。
-
使用環境 : Visual Studio Community 2019 錯誤訊息 : 錯誤 NETSDK1004 找不到資產檔案 '...\obj\project.assets.json'。請執行 NuGet 套件還原,以產生此檔案。
-
Cocos Creator 編譯Android APK失敗的可能原因 Execution failed for task Cocos Creator 版本: 2.3.1 NDK版本:r21 Android SDK:29 編譯方式: default 問題: Windows...
沒有留言:
張貼留言