如何兼容json對象和json數組 PHP如何判斷字符串是否標準JSON,有什么好辦法?
PHP如何判斷字符串是否標準JSON,有什么好辦法?引言在MYSQL5.6及200以內沒有JSON這個字段類型的時候,我們還只有用字符串存儲數組,對象,這些結構數據;哪怕有就將序列化的對象存庫的,都是
PHP如何判斷字符串是否標準JSON,有什么好辦法?
引言在MYSQL5.6及200以內沒有JSON這個字段類型的時候,我們還只有用字符串存儲數組,對象,這些結構數據;哪怕有就將序列化的對象存庫的,都是不得已而為之。
編程中也偶爾兩個對接口并且json_encode/json_decode。那就如果不是所得的字符串不是標準的格式,有什么辦法現場快速檢測嗎?
本文就來說一說。
學習時間最方便的辦法,應該不使用PHP內置的json_encoding函數,這對此函數的參數和返回值,我們必須認真地講。
該函數接受一個JSON編碼的字符串另外把它轉換為PHP變量。函數結構:
mixedjson_decode(string$json[,bool$assocfalse[,int$depth512[,int$options0]]])
除了第一個字符串類型的$json必填之外,其他全是考生類型。要是我們定做功能,不需要后面的參數也指定。諸如,解碼的字符串解析為關聯數組,那你就更改$assoctrue。
考慮到到兼容性的要求,$json傳來的字符串,可以是UTF-8編碼格式。
我們試著編譯程序一個助手函數,主要是用于確定字符串是否需要標準的json格式:
functionisJson($string){json_decode($string)return(json_last_error()JSON_ERROR_NONE)}
這個方法不使用了2個函數,和1個常量。其中json_decode是對字符串解碼不提先不說。json_last_error函數,假如有返回值,則是JSON編碼解碼時結果發生的錯誤。
JSON_ERROR_NONE是無錯誤,0。該句判斷沒有錯誤則是標準格式,回true;不然的話直接返回false。
深入學習不過上面的代碼對此json加解碼過程中的錯誤判斷我還是都很粗糙的。有一位小哥不嫌繁瑣,手動啟動拼裝了具體一點的錯誤處理函數,非常實用。
不使用根據上述規定函數進行測試:
$json[{user_id:13,username:stack},{user_id:14,username:然后就沒有然后}]$parametersjson_validate($json)print_r($inputs)
輸出內容不勝感激:
這是正常情況,json格式百分之百正確。我們再測試出來一個又不是相關規范格式的字符串。
$json{background-color:yellowcolor:#000padding:10pxwidth:650px}$inputjson_validate($json)print_r($input)
輸出出現錯誤信息:
Syntaxerror,malformed JSON.
都可以的正則跟字符串交道,正則表達式甚至是可以做一切你要想的結果。json字符串也完全不一樣,據文檔所說,建議使用正則表達式可以確定JSON格式,穩定管用,但速度還很快地。
下面這個正則表達式您拿小本本記再說,長得一模一樣地抄過去用就可以了。
return!preg_match(/[^,:{}[]0-9.-Eaeflnr-u
t]/,preg_replace(/(.|[^])*/,,$json_string))
寫在結果如果沒有考慮程序的可讀性,和可維護性,在用json_normalize函數的判斷無疑更形象直觀,大家也更比較熟悉。但他正則表達式所能夠體現出的高效率都是不容小覷的。
birthdaycoding:_)
我是@程序員小助手,堅持了能分享編程知識,記得關注。
安卓,從服務器接收的json字符串,解析后怎么轉換成數組?
如果這個json字符串本身是數組的形式,你引入第三方jar包之后,有帶有parseJsonArray的方法,一個一個遍歷就好。