使用 System.Text.Json 将 json 数组反序列化为对象 C#
Deserializing a json array into a object C# using System.Text.Json
我有一些 JSON 从 API 返回,形式为
[
{
"param1":"value",
"param2":"value2",
...
},
{
"param1":"value",
"param2":"value2",
...
}
]
我有一个 class Foo
:
public class Foo
{
public string param1 { get; set; }
public string param2 { get; set; }
}
我正在使用 System.Text.Json
库。
如果我这样反序列化:
var output = JsonSerializer.Deserialize<List<Foo>>(JsonStr)
一切正常,在 'output' 中我有一个列表 Foo
。
但是,我想反序列化为另一个 class,这样我就可以从一个基 class 继承一些东西,它可以执行一些检查,看看是否有数据和其他一些零碎的东西。
public class Bar : BarBase
{
public List<Foo> data { get; set; }
}
显然,如果我尝试反序列化为 Bar
,它会抛出无法将 JSON 映射到对象的错误。
是否有任何属性可用于声明 JSON 应映射到 'data' 或者是否有不同的方法来处理此问题?
干杯
马克
问题可以通过让 Bar class 继承 List
来解决
public class Bar : List<Foo>
{
public List<Foo> data { get; set; }
}
我有一些 JSON 从 API 返回,形式为
[
{
"param1":"value",
"param2":"value2",
...
},
{
"param1":"value",
"param2":"value2",
...
}
]
我有一个 class Foo
:
public class Foo
{
public string param1 { get; set; }
public string param2 { get; set; }
}
我正在使用 System.Text.Json
库。
如果我这样反序列化:
var output = JsonSerializer.Deserialize<List<Foo>>(JsonStr)
一切正常,在 'output' 中我有一个列表 Foo
。
但是,我想反序列化为另一个 class,这样我就可以从一个基 class 继承一些东西,它可以执行一些检查,看看是否有数据和其他一些零碎的东西。
public class Bar : BarBase
{
public List<Foo> data { get; set; }
}
显然,如果我尝试反序列化为 Bar
,它会抛出无法将 JSON 映射到对象的错误。
是否有任何属性可用于声明 JSON 应映射到 'data' 或者是否有不同的方法来处理此问题?
干杯 马克
问题可以通过让 Bar class 继承 List
来解决public class Bar : List<Foo>
{
public List<Foo> data { get; set; }
}