C# 如何将内部带有jarray的json转换为对象

C# 如何将内部带有jarray的json转换为对象,c#,json,json.net,C#,Json,Json.net,我有以下课程 public class Test { public string name; public List<Field> fields; } public class Field { public string id; public string name; } 我试图将这个json转换为测试对象,下面的代码正确地转换了“name”,但是“fields”总是返回null Test returnTest = JObject.Parse(

我有以下课程

public class Test
{
    public string name;

    public List<Field> fields;
}

public class Field
{
    public string id;

    public string name;
}
我试图将这个json转换为测试对象,下面的代码正确地转换了“name”,但是“fields”总是返回null

Test returnTest = JObject.Parse(json).ToObject<Test>()
Test returnTest=JObject.Parse(json.ToObject())
关于如何让“字段”返回数组,有什么想法吗?

以下方法有效:

publicstaticvoidmain()
{
var json=“{\'name\':\'name1\',\'fields\':[{\'id\':\'4786182461\',\'name\':\'field1\',},{\'id\':\'41241122\',\'name\':\'field2\',},]}”;
var result=JsonConvert.DeserializeObject(json);
Console.WriteLine(result.Name);
Console.WriteLine(result.Count);
}
公开课考试
{
公共字符串名称;
公共列表字段;
}
公共类字段
{
公共字符串id;
公共字符串名称;
}
结果:

名称1

二,

但是,我强烈建议您坚持最佳实践并使用属性,例如:

public class Test
{
    public string Name { get; set; }
    
    public List<Field> Fields { get; set; }
}
公共类测试
{
公共字符串名称{get;set;}
公共列表字段{get;set;}
}
以下工作:

publicstaticvoidmain()
{
var json=“{\'name\':\'name1\',\'fields\':[{\'id\':\'4786182461\',\'name\':\'field1\',},{\'id\':\'41241122\',\'name\':\'field2\',},]}”;
var result=JsonConvert.DeserializeObject(json);
Console.WriteLine(result.Name);
Console.WriteLine(result.Count);
}
公开课考试
{
公共字符串名称;
公共列表字段;
}
公共类字段
{
公共字符串id;
公共字符串名称;
}
结果:

名称1

二,

但是,我强烈建议您坚持最佳实践并使用属性,例如:

public class Test
{
    public string Name { get; set; }
    
    public List<Field> Fields { get; set; }
}
公共类测试
{
公共字符串名称{get;set;}
公共列表字段{get;set;}
}

您不使用标准的
JsonConvert.DeserializeObject(json)
的任何原因?公共字段通常是一个很大的禁忌,你应该使用属性。我也尝试了标准字段,但也遇到了同样的问题。现在一切正常,我仍然不知道发生了什么。。。谢谢你对酒店的建议!您不使用标准的
JsonConvert.DeserializeObject(json)
?公共字段通常是一个很大的禁忌,你应该使用属性。我也尝试了标准字段,但也遇到了同样的问题。现在一切正常,我仍然不知道发生了什么。。。谢谢你对酒店的建议!您不使用标准的
JsonConvert.DeserializeObject(json)
?公共字段通常是一个很大的禁忌,你应该使用属性。我也尝试了标准字段,但也遇到了同样的问题。现在一切正常,我仍然不知道发生了什么。。。谢谢你对酒店的建议!
public class Test
{
    public string Name { get; set; }
    
    public List<Field> Fields { get; set; }
}