

【答客問】NSwag WebAPI 回傳 DataTable 發生 JSON property 'Item' is defined multi...
source link: https://blog.darkthread.net/blog/nswag-return-datatable/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

讀者 Bike 提到「NSwag 遇到回傳 DataTable 的 Action 會回傳 The JSON property 'Item' is defined multiple times on type 'System.ComponentModel.ComponentCollection' 錯誤」的問題。
同樣問題我也遇過,用 NSwag + WebAPI 回傳 DataTable 型別,大概只會發生在古蹟維修改建時,有現化與傳統融合的趣味,但 NSwag 遇到回傳 DataTable 會在 JSON 序列化時出錯。NSwag Github Issue 區有相關討論,結論是 Request/Response 遇到 Model 屬性型別繼承自 System.ComponentModel 會出現 The JSON property 'Item' is defined multiple times on type 錯誤。除了 DataTable,有其他開發者在使用 KeyedCollection、JArray 時也踩到相同問題。
在專案遇到這個問題,身為老司機,加上對 WebAPI 介面規格沒什麼堅定信仰,我選擇輕打方向盤,繞過石頭繼續前進。以下是我的 Workaround,定義一個 DataTableBox 類別取代 DataTable:
public class DataTableBox
{
public string DataTableJson { get; set; }
public DataTable GetDataTable() => JsonConvert.DeserializeObject<DataTable>(DataTableJson);
public DataTableBox(DataTable table)
{
DataTableJson = JsonConvert.SerializeObject(table);
}
public DataTableBox()
{
}
}
將 Action 回傳資料型別由 DataTable 改成 DataTableBox。用 new DataTableBox(dataTableObject) 將 DataTable 轉成 DataTableBox,接收端則呼叫 .GetDataTable() 取回 DataTable,多寫幾行 Code 輕巧避開 NSwag 問題。
Recommend
-
4
ASP.NET MVC 回傳 HTTP 400 Bad Request 並附加錯誤訊息-黑暗執行緒同事的專案遇到以下需求:依規格實作 WebAPI (考量開發彈性,使用 ASP.NET MVC Controller,未走 ApiController ),規格定義遇到某些狀況需抛回 HTTP 400 Bad Rquest 並以 JSON 格式回傳錯誤訊...
-
11
IE AJAX 呼叫發生 0x2ee2 錯誤 2021-09-10 11:59 PM
-
9
【答客問】無原始碼修改 .dll/.exe Embedded Resource-黑暗執行緒 讀者骨董修復菜鳥問了一個有趣問題 - ASP.NET 網站的 .js...
-
5
【答客問】.NET 6 SQLite 原生程式庫版本問題-黑暗執行緒 讀者 Quintos 問了好問題:文章裡 .NET 6 在用的 SQLite 是微軟版還是...
-
9
Slack 在 2022/02/22 發生的 downtime 說明 Slack 針對今年年初的爆炸提出了說明:「Slack’s Incident on 2-22-22」,但真正的重點都...
-
6
【答客問】Visual Studio 使用 /appName URL 偵錯網站-黑暗執行緒 從事古蹟維護的讀者來訊,某個使用 VS2010 維護的舊專案,原本偵錯時 URL 的格式為 ℎttp://localhost:12345/AppName/test.aspx;改用 VS2019 之後,偵錯 URL 變...
-
6
【茶包射手日記】 VS2022 編譯 Web Site Project 發生「未將物件參考設定為物件執行個體」錯誤-黑暗執行緒 紀念花了我一個半小時的茶包。 某個古蹟 ASP.NET Web Site 專案,使用 IIS 測試 OK,在 VS2022 按 F5 Debug 時卻編譯不過,噴...
-
3
【答客問】Json.NET-動態決定屬性是否序列化-黑暗執行緒 昨天提到Json.NET屬性序列化設定,接獲讀者森哥留言:
-
4
EF Core Database.GetDbConnection() 實驗-黑暗執行緒 讀者 Ho.Chun 問了一個問題:在 EF Core 透過 Db...
-
6
C# 連線 HTTPS 網站發生驗證失敗導致基礎連接已關閉-黑暗執行緒 某台透過 .NET WebClient 物件爬網頁抓資料排程忽然出現: 基礎連接已關閉: 傳送時發生未預期的錯誤。 ---> System.IO.IOException: 驗證失敗,因為遠端群...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK