[英]Populate List with Json file
我有一个物品清单。 Item是具有多个构造函数的对象,因此可以多种形式创建一个Item。
具有两个构造函数的Item类的示例。
public class Item
{
public string name = "";
public int age= 0;
public int anotherNumber = 0;
public Item(string iName, int iAge)
{
name = iName;
age= iAge;
}
public Item(string iName, int iAge, int iAnotherNumber)
{
name = iName;
age= iAge;
}
}
然后,我有一个Json文件,格式为:-
[{"name":"Joseph","age":25},{"name":"Peter","age":50}]
我正在使用以下方法使用Newtonsoft.Json API读取文件并填充列表。
public List<Item> ReadJsonString()
{
List<Item> data = new List<Item>();
string json = File.ReadAllText("\\path");
data = JsonConvert.DeserializeObject<List<Item>>(json);
return data;
}
如果Item类中只有一个构造函数(例如,带有2个参数的构造函数),则此方法可以正常工作,并且我可以填充列表。 但是,当我在Items类中添加第二个构造函数时(因为我希望也能够读取具有第三个属性的Json文件。
例:-
[{"name":"Joseph","age":25, "anotherNumber": 12},{"name":"Peter","age":50, "anotherNumber": 12}]
ReadJsonObj方法失败,错误为“无法找到用于类型Item的构造函数”。 我可以通过创建多个类Item(例如ItemA,ItemB)来解决此问题,一个类接受三个变量,另一个接受两个变量。 但是,我只想拥有一个Item类。
我不知道为什么会这样以及如何解决这个问题。
您可以使用properties
代替常规字段和构造函数初始化。
public class Item
{
public string name {get;set;}
public int age {get;set;}
public int anotherNumber {get;set;}
}
因此,您将介绍两种反序列化情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.