我無法序列化BaseResponse<NoContent>物件。但是Device物件序列化成功。我沒有找到原因
var data = new BaseResponse<NoContent>();
var json1 = JsonSerializer.Serialize(data);
var data2 = new Device();
var json2 = JsonSerializer.Serialize(data2);
BaseResponse 內容 :
public class BaseResponse<T> where T : class, new()
{
public BaseResponse()
{
Data = new T();
}
public T Data;
public string Status = "Success";
public List<string> Errors;
public BaseResponse<T> AddError(string message)
{
Errors ??= new List<string>();
Status = "Error";
Errors.Add(message);
return this;
}
}
編輯: Newtonsoft.Json 可以序列化它們。我決定使用 Newtonsoft。
uj5u.com熱心網友回復:
你必須添加 getter 和 setter
public class BaseResponse<T> where T : class, new()
{
public BaseResponse()
{
Data = new T();
}
public T Data {get; set;}
public string Status {get; set;} = "Success";
public List<string> Errors {get; set;}
public BaseResponse<T> AddError(string message)
{
Errors ??= new List<string>();
Status = "Error";
Errors.Add(message);
return this;
}
}
測驗
var data = new BaseResponse<NoContent>();
data.AddError("error message");
var json1 = System.Text.Json.JsonSerializer.Serialize(data);
輸出
{
"Data": {
"Content": "No Content"
},
"Status": "Error",
"Errors": [
"error message"
]
}
無內容類
public class NoContent
{
public string Content {get; set;} ="No Content";
}
uj5u.com熱心網友回復:
缺少的是包含欄位的選項,默認情況下System.Text.Json不序列化欄位,只有屬性。
您可以通過提供 來更改此行為JsonSerializerOptions,例如:
var json1 = JsonSerializer.Serialize(data, new JsonSerializerOptions() { IncludeFields = true });
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/370166.html
