class Program
{
static void Main(string[] args)
{
JSONClass jsonClass = new JSONClass();
JSONElement el = new JSONElement
{
A = 5,
B = "test1"
};
JSONElement el2 = new JSONElement
{
A = 3,
B = "test2"
};
jsonClass.JSONList.Add(el);
jsonClass.JSONList.Add(el2);
var output = JsonSerializer.Serialize<JSONClass>(jsonClass);
Console.WriteLine(output);
}
}
public class JSONClass
{
public List<JSONElement> JSONList = new List<JSONElement>();
}
public class JSONElement
{
public int A { get; set; }
public string B { get; set; }
}
此代碼回傳{},這意味著JsonSerializer.Serialize未能執行它應該執行的操作。我想這是因為它不夠聰明,無法處理自定義型別。這是我的問題,如何做到這一點。互聯網上充斥著如何撰寫自定義轉換器等的文章,但沒有一篇提到自定義型別。
uj5u.com熱心網友回復:
您的JSONList成員是一個公共欄位-而JsonSerializer查找屬性。
將您的代碼更改為JSONClass:
public class JSONClass
{
public List<JSONElement> JSONList { get; } = new List<JSONElement>();
}
然后輸出是:
{"JSONList":[{"A":5,"B":"test1"},{"A":3,"B":"test2"}]}
在這里學到的更大的教訓是不要假設錯誤出在您正在使用的庫中。總是開始與期望,這個問題是在自己的代碼。有時您會發現它確實存在于庫或系統代碼(或編譯器等)中,但根據我的經驗,這種情況相對較少。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324335.html
上一篇:反序列化通用JSON并使用其屬性
下一篇:我需要拆分json資料
