2023年11月29日 星期三

for .net core mvc ,關於json輸出、反序列化一二事

 1.有時系統太自動也不好,像是在json轉換時就是最好的例子了
明明在serverside裡的類別屬性是大寫開頭,結果輸出到json ( 像是在Action裡用「return Json(.....) 」) 去就變成小寫開頭
這就是System.Text.Json的問題了
想整個規避掉就直接在Program.cs裡做點小設定
-------------------------.net 6.0的 program.cs--------------------
 builder.Services.AddControllersWithViews()        
 .AddJsonOptions(options => {
     options.JsonSerializerOptions.PropertyNamingPolicy = null; // This preserves the original case
 });
-------------------------------------------------
(一般都只是「 builder.Services.AddControllersWithViews() ;  」而沒有用到AddJsonOptions)


有json出就有json入,最常用的是系統預設的
System.Text.Json.JsonSerializer.Deserialize<T>(string)」
沒有什麼不好啦,只是厚....如果遇到null轉換就會出錯了
如:
-----------------------
System.Text.Json.JsonException: 'The JSON value could not be converted to System.Nullable`1[System.Decimal]
-----------------------
像上述的錯誤會發生在parsing json string 把null轉成其他型態時會發生錯誤
如何解決?
這時就要請老朋友--NewtonSoft的Json lib相助了
-------------------------------------------
var v = Newtonsoft.Json.JsonConvert.DeserializeObject<Type>(jsonfiledString);
-----------------------------------------
問題就解決了
參考這裡

以上,大家加油吧