我有这个对象,我想再添加一天。
[{
"stone":"5kg",
"years":
[{
"year":"2017",
"stone":"5kg",
"months":
[{
"month":"august",
"stone":"0.5kg",
"days":
[{
"day":"14",
"stone":"0.1kg"
}]
}],
"weeks":
[{
"week":"01",
"stone":"0.5kg"
}]
}]
}]
我将它存储在一个文件中,我将其反序列化:
string file = System.IO.File.ReadAllText(@"C:\Users\luuk\desktop\test1.json");
var _data = JsonConvert.DeserializeObject<List<Data>>(file);
现在我想为它添加一天,但我无法弄明白。 我试过这样的事情:
_data.Add(new Data()
{
});
string json = JsonConvert.SerializeObject(_data);
System.IO.File.WriteAllText(@"C:\Users\luuk\desktop\test1.json", json);
但我只能在那里访问[]和石头。
这些是我的课程:
public class Data
{
public string stone { get; set; }
public List<Years> years { get; set; }
}
public class Years
{
public string year { get; set; }
public string stone { get; set; }
public List<Months> months { get; set; }
public List<Weeks> weeks { get; set; }
}
public class Months
{
public string month { get; set; }
public string stone { get; set; }
public List<Days> days { get; set; }
}
public class Days
{
public string day { get; set; }
public string stone { get; set; }
}
public class Weeks
{
public string week { get; set; }
public string stone { get; set; }
}
那么如何在对象中添加其他日期呢?
(我已经将我的代码中的所有变量都从荷兰语翻译成了英语,所以我有一些我忘记的或者一些错字#)
答案 0 :(得分:4)
您需要先将年份和月份放在您想要添加另一天的位置。以下是如何做到这一点:
// Update the data in one line
_data[0].years.First(x=> x.year == "2017") // Get the year "2017"
.months.First(x=> x.month == "august") // Get the month "august"
.days.Add(new Days { day = "15", stone = "0.5kg" }); // Add a new day
OR
// Get the year
Years year = _data.years.First(x=> x.year == "2017");
// Get the month
Months month = year.months.First(x=> x.month == "august");
// Add the day in the month
month.days.Add(new Days { day = "15", stone = "0.5kg" });
答案 1 :(得分:1)
你正在使用数组。您无法向已初始化的数组添加内容,它们是固定大小的。
将T[]
的所有数组更改为List<T>
,然后您可以在其上调用.Add()
来添加项目。