最近遇到與API串接資料時遇到一個狀況,有可能取得的資料是一段 HTML 或者是特定的 Json 格式的字串進而往下繼續處理業務邏輯。因為 API 端暫時沒有設計合適的資料結構,所以現階段也只能用現行的資料來做判斷是否是特定的 Json 資料。而且有時收到 API 的資料的內容並不是 Json 格式的回傳結果,而是直接回覆一個網頁 HTML 用來顯示錯誤訊息(汗),查了一下文件,只有看到似乎沒有直接可以使用在 .NET Core的套件,與同事們討論解決方案後,JsonTryParse 就這樣誕生了。
publicstaticclassJsonParseExtension { publicstaticboolJsonTryParse<T>(thisstring jsonString, out T result) where T : class { try { result = JsonSerializer.Deserialize<T>(jsonString); returntrue; } catch(Exception e) { result = default; Debug.WriteLine(e.Message); returnfalse; } } }
這邊建立一個BaseModel,BaseModel為收到API資料時的基本格式。
1 2 3 4 5 6 7 8 9
publicclassBaseModel<T> whereT : class { [JsonPropertyName("Code")] publicint Code { get; set; } = -1; [JsonPropertyName("Msg")] publicstring Message { get; set; } [JsonPropertyName("Response")] public T Response { get; set; } }
接著建立一個User的Model,代表接收到的Response是User的格式。
1 2 3 4 5 6 7
publicclassUser { [JsonPropertyName("Name")] publicstring Name { get; set; } [JsonPropertyName("Age")] publicint Age { get; set; } }