如何将json与jarray内部转换为对象

本文关键字:内部 转换 对象 jarray json | 更新日期: 2023-09-27 17:54:33

我有以下类

public class Test
{
    public string name;
    public List<Field> fields;
}
public class Field
{
    public string id;
    public string name;
}

和以下Json

{
    "name": "name1",
    "fields": [
    {
       "id": "4786182461",
       "name": "field1",
    },
    {
       "id": "41241241122",
       "name": "field2",
    },
    ]
}

我试图将这个json转换为测试对象,下面的代码正确转换为"名称",但"字段"总是返回null。

Test returnTest = JObject.Parse(json).ToObject<Test>()

关于如何使"字段"返回数组的任何想法?

如何将json与jarray内部转换为对象

以下作品DotNetFiddle示例:

public static void Main()
{
    var json = "{'"name'": '"name1'",'"fields'": [{'"id'": '"4786182461'",'"name'": '"field1'",},{'"id'": '"41241241122'",'"name'": '"field2'",}, ]}";
    
    var result = JsonConvert.DeserializeObject<Test>(json);
    
    Console.WriteLine(result.Name);
    Console.WriteLine(result.Count);
}
public class Test
{
    public string Name;
    
    public List<Field> Fields;
}
public class Field
{
    public string id;
    public string name;
}
结果:

name1

2

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

public class Test
{
    public string Name { get; set; }
    
    public List<Field> Fields { get; set; }
}