我有一个 JSON 字符串,其中包含一个对象数组。我需要序列化为 .NET 类并使用对象名称作为属性值。
public class DocumentFieldMap
{
[Key]
[JsonPropertyName("letterCode")]
public string DocumentCode { get; set; }
[JsonPropertyName("letterFields")]
public List<DocumentField> DocumentFields { get; set; }
}
public class DocumentField
{
[Key]
public string FieldName { get; set; }
public string DataSource { get; set; }
public string ReadOnly { get; set; }
}
[
{
"letterCode": "RR",
"letterFields": {
"Name": {
"DataSource": "",
"ReadOnly": "true"
},
"Signature": {
"DataSource": "",
"ReadOnly": "false"
}
}
}
]
我想将 letterFields 对象名称(例如 Name)序列化为 FieldName 属性,但我找不到一个好的示例。
可能最简单的方法是将其转换为另一个包含
Dictionary<string, ...>
的类。例如匿名类型:
var maps = new[]
{
new DocumentFieldMap
{
DocumentCode = "code",
DocumentFields =
[
new DocumentField
{
FieldName = "Name",
DataSource = "",
ReadOnly = "true"
}
]
}
};
var serialize = JsonSerializer.Serialize(maps.Select(m => new
{
letterCode = m.DocumentCode,
letterFields = m.DocumentFields
.ToDictionary(f => f.FieldName, field => new { field.DataSource, field.ReadOnly })
}));
如果您愿意,可以从匿名类型切换到某些 DTO。