C# Json使用数组项名称序列化数组
我有下面的对象结构C# Json使用数组项名称序列化数组,c#,json,serialization,C#,Json,Serialization,我有下面的对象结构 public class Person { public string Name { get; set; } [System.Xml.Serialization.XmlArrayItemAttribute("Subject")] public Subject[] Subjects { get; set; } } public class Subject { public string Name { get; set; }
public class Person
{
public string Name { get; set; }
[System.Xml.Serialization.XmlArrayItemAttribute("Subject")]
public Subject[] Subjects { get; set; }
}
public class Subject
{
public string Name { get; set; }
public string Grade { get; set; }
}
我正在尝试使用JsonMediaTypeFormatter序列化此对象
var person = new Person()
{
Name = "John",
Subjects = new[]
{
new Subject
{
Name="Physics",
Grade="A"
},
new Subject
{
Name="Maths",
Grade="B"
}
}
};
var jsonFormatter = new JsonMediaTypeFormatter();
var jsonContent = new ObjectContent<Person>(person, jsonFormatter);
var jsonContentStr = jsonContent.ReadAsStringAsync().Result;
但是我想要下面的带有数组项名称的序列化字符串格式
{
"Name": "John",
"Subjects": {
"Subject": {
"Name": "Physics",
"Grade": "A"
},
"Subject": {
"Name": "Maths",
"Grade": "B"
}
}
}
通常,这是通过使用XmlArrayItemAttribute进行xml序列化来实现的。我们能为Json做些什么吗?我知道更新对象结构可以解决这个问题,但我想知道是否可以在不更新对象的情况下完成这项工作,可能是使用自定义jsonconverter?我强烈建议您在使用此结构时三思而后行,因为大多数反序列化程序不会按您所想的方式处理此问题。虽然键在JSON中不要求是唯一的,但它们应该是唯一的,并且大多数实现都反序列化到字典或对象中,在这种情况下,重复的键不会真正起作用。这被认为是有效的JSON吗?
{
"Name": "John",
"Subjects": {
"Subject": {
"Name": "Physics",
"Grade": "A"
},
"Subject": {
"Name": "Maths",
"Grade": "B"
}
}
}