ExcelStylesheet 类有一个对象,要序列化为 JSON。
public class ExcelStylesheet
{
public Dictionary<int, uint> CellFormatIndexes { get; set; }
public List<Font> Fonts { get; set; }
public List<CellFormat> CellFormats { get; set; }
public List<Fill> Fills { get; set; }
public List<Border> Borders { get; set; }
}
我正在尝试序列化到文件。
string json = JsonConvert.SerializeObject(stylesheet);
File.WriteAllText(filePath, json);
在输出我得到:
{"CellFormatIndexes": {"0": 9,"1": 10},"Fonts": [[[],[]],[[],[],[]]],"CellFormats": [[[]],[[]]],"Fills": [[]],"Borders": [[]]}
为什么要以这种方式序列化对象列表以及如何进行正常序列化?
使用的库:Newtonsoft.Json
. 来自库类对象的列表DocumentFormat.OpenXml
因为所有这些类都继承自
OpenXmlElement
,这是子元素的集合。Newtonsoft.Json 将所有此类类保存为数组。如果需要将对象写入文件以供以后读取,最好在写入时通过 OuterXml 将这些对象转换为字符串,在读取时通过接受字符串的构造函数转换回来。
JsonConverter
你可以试着为继承人写你自己的OpenXmlElement
。