C# 使用C在JSON中添加类名#
我使用JSON.NET创建了Person类的JSON,但JSON中没有显示“Person”。我认为它应该在一开始就出现。问题是什么或如何解决?多谢各位C# 使用C在JSON中添加类名#,c#,json,C#,Json,我使用JSON.NET创建了Person类的JSON,但JSON中没有显示“Person”。我认为它应该在一开始就出现。问题是什么或如何解决?多谢各位 [ { "Name": "Umer", "Age": 25 }, { "Name": "Faisal", "Age": 24 } ] 这里是生成JSON的C代码 List<Person> eList = new List<Person>(); Person a = new
[
{
"Name": "Umer",
"Age": 25
},
{
"Name": "Faisal",
"Age": 24
}
]
这里是生成JSON的C代码
List<Person> eList = new List<Person>();
Person a = new Person("Umer",25);
Person b = new Person("Faisal", 24);
eList.Add(a);
eList.Add(b);
string jsonString = JsonConvert.SerializeObject(eList,Formatting.Indented);
List eList=new List();
人员a=新人员(“Umer”,25);
b人=新人(“费萨尔”,24岁);
添加(a);
添加(b);
字符串jsonString=JsonConvert.SerializeObject(eList,Formatting.Indented);
这没有问题。它可以通过这种方式进行反序列化
您可以这样反序列化它:
Person deserialized = (Person)JsonConvert.DeserializeObject( serializedText ,typeof(Person))
但是如果您需要,根问题可能会有所帮助。如果您确实希望将类名作为JSON的一部分,可以使用匿名类重新创建列表,然后将其序列化
var persons = eList.Select(p => new { Person = p }).ToList();
var json = JsonConvert.SerializeObject(persons, Formatting.Indented);
输出:
试试看
var Person=new List();
人员a=新人员(“Umer”,25);
b人=新人(“费萨尔”,24岁);
人。添加(a);
人。添加(b);
var集合=人;
DynamicCollectionWrapper=new{
myRoot=集合
};
var output=JsonConvert.SerializeObject(collectionWrapper);
您需要添加typenameholling
设置:
List<Person> eList = new List<Person>();
Person a = new Person("Umer", 25);
Person b = new Person("Faisal", 24);
eList.Add(a);
eList.Add(b);
string jsonString = JsonConvert.SerializeObject(eList, Formatting.Indented,
new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All });
有关更多详细信息,请参见。他没有询问反序列化,据我所知,他希望json的根以personth这个词开头。这可能会有所帮助:在
var collection=Person
行中,您是否打算改为键入“Person”
,即字符串?不仅仅是eList.Select(p=>new{Person=p})
够了吗?我们知道每个person对象都被正确序列化。我们只需要将每个对象的关键点设置为字符串“Person”。如果我遗漏了什么,请纠正我。@AmithGeorge你完全正确。我编辑了我的答案,谢谢。
List<Person> eList = new List<Person>();
Person a = new Person("Umer", 25);
Person b = new Person("Faisal", 24);
eList.Add(a);
eList.Add(b);
string jsonString = JsonConvert.SerializeObject(eList, Formatting.Indented,
new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All });
[
{
"$type" : "YourAssembly.Person"
"Name" : "Umer",
"Age" : 25
},
...
]