在開發時很常使用到 Json 格式作為設定檔,舉例來說在 ASP.NET Core 設定檔預設也是使用 Json 格式,系統開發中也會將一些常用的設定放在 Json 方便調整,在 ASP.NET 讀取 Json 最常用到的是 Json.Net 套件,使用上可以很方便地將字串轉為定義的類別內容,這篇就來分享怎麼用 Json.net 來判斷要轉換的文字字串是否為 Json 格式,若有問題歡迎留言一起討論。
代碼
首先先下載 Json.Net 套件,使用前需要透過 nuget 下載 Json.net
Install-Package Newtonsoft.Json -Version 12.0.2下列代碼主要是先做檢查輸入字串是否為空與字串前後是否有 {} 與 [] 關鍵字,如果沒有直接不進行 parse 的動作,接著使用 JToken.Parse 加上 try catch 判斷字串為 Json 格式,廢話不多說,直接看代碼
使用方式相當容易private static bool IsJsonFormat(string value) { if (string.IsNullOrWhiteSpace(value)) return false; if ((value.StartsWith("{") && value.EndsWith("}")) || (value.StartsWith("[") && value.EndsWith("]"))) { try { var obj = JToken.Parse(value); return true; } catch (JsonReaderException) { return false; } } return false; }
string jsonText = "{\"statusCode\":400,\"error\":\"Error\",\"errorCode\":\"error_code\",\"message\":\"The Message\"}"; var isJson = IsJsonFormat(jsonText); Console.WriteLine($"Your input Json Text : {jsonText}"); Console.WriteLine($"IsJsonFormat : {isJson}"); Console.Read();輸出如下
如果希望更方便使用的話,可以使用擴充方法增加方便性
擴充方法
public static class ExtensionMethods { public static bool IsJsonFormat(this string value) { if (string.IsNullOrWhiteSpace(value)) return false; if ((value.StartsWith("{") && value.EndsWith("}")) || (value.StartsWith("[") && value.EndsWith("]"))) { try { var obj = JToken.Parse(value); return true; } catch (JsonReaderException) { return false; } } return false; } }
string jsonText = "{\"statusCode\":400,\"error\":\"Error\",\"errorCode\":\"error_code\",\"message\":\"The Message\"}"; jsonText.IsJsonFormat(); // result : true
參考
JToken Class
0 意見:
張貼留言