灵台门户网站建设,网站开发费用会计分录,如果网站设计时,你的网站正在建设中System.Text.Json#xff08;从 .NET Core 3.1 开始#xff09;#xff0c;为了能够序列化这些类型#xff0c;您需要为JsonConverterT您需要的类型实现自己的类型并在JsonSerializerOptions. 为您要求的特定类型编写一个序列化程序应该相当容易。
如果您不想自己…System.Text.Json从 .NET Core 3.1 开始为了能够序列化这些类型您需要为JsonConverterT您需要的类型实现自己的类型并在JsonSerializerOptions. 为您要求的特定类型编写一个序列化程序应该相当容易。
如果您不想自己实现有简便的方法请参考另一篇文章JsonException: A possible object cycle was detected which is not supported 检测到可能的对象循环这是不受支持的-CSDN博客
适用于序列化的示例省略了反序列化组件代码如下
public class DataTableConverter : JsonConverterDataTable { public override DataTable Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { throw new NotImplementedException(); } public override void Write(Utf8JsonWriter writer, DataTable value, JsonSerializerOptions options) { writer.WriteStartArray(); foreach (DataRow row in value.Rows) { writer.WriteStartObject(); foreach (DataColumn column in row.Table.Columns) { object columnValue row[column]; // If necessary: if (options.IgnoreNullValues) { // Do null checks on the values here and skip writing. } writer.WritePropertyName(column.ColumnName); JsonSerializer.Serialize(writer, columnValue, options); } writer.WriteEndObject(); } writer.WriteEndArray(); } }
public class DataSetConverter : JsonConverterDataSet { public override DataSet Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { throw new NotImplementedException(); } public override void Write(Utf8JsonWriter writer, DataSet value, JsonSerializerOptions options) { writer.WriteStartObject(); foreach (DataTable table in value.Tables) { writer.WritePropertyName(table.TableName); JsonSerializer.Serialize(writer, table, options); } writer.WriteEndObject(); } }
private static void DataSet_Serialization_WithSystemTextJson() { var options new JsonSerializerOptions() { Converters { new DataTableConverter(), new DataSetConverter() } }; (DataTable table, DataSet dataSet) GetDataSetAndTable(); string jsonDataTable JsonSerializer.Serialize(table, options); // [{id:0,item:item 0},{id:1,item:item 1}] Console.WriteLine(jsonDataTable); string jsonDataSet JsonSerializer.Serialize(dataSet, options); // {Table1:[{id:0,item:item 0},{id:1,item:item 1}]} Console.WriteLine(jsonDataSet); // Local function to create a sample DataTable and DataSet (DataTable, DataSet) GetDataSetAndTable() { dataSet new DataSet(dataSet); table new DataTable(); DataColumn idColumn new DataColumn(id, typeof(int)) { AutoIncrement true }; DataColumn itemColumn new DataColumn(item); table.Columns.Add(idColumn); table.Columns.Add(itemColumn); dataSet.Tables.Add(table); for (int i 0; i 2; i) { DataRow newRow table.NewRow(); newRow[item] item i; table.Rows.Add(newRow); } dataSet.AcceptChanges(); return (table, dataSet); } }
查看微软文档可能会提供更多指导
How to write custom converters for JSON serialization - .NET | Microsoft Learn
希望本文对你有帮助。