C# 使用C在JSON中添加类名#

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

我使用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 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
    },
    ...
]