JSON更新/替换节点通过LINQ
本文关键字:LINQ 节点 替换 更新 JSON | 更新日期: 2023-09-27 18:05:30
我需要取一个JSON
文件并更新/替换JSON
文件的一些对象。问题是当我把JSON
分成不同的JObject
时,它们总是null
。
背景:我需要用基于ObservableCollection
的多个对象来解析和更新JSON
文件(可以假设ObservableCollection的类将与JSON文件中的对象完美匹配)。下面是JSON
{
"Customers": [
{
"FirstName": "Bob",
"LastName": "Smith"
},
{
"FirstName": "Jane",
"LastName": "Doe"
}
],
"Subs":[
{
"SubID": "100",
"Descript": "Sub 1"
},
{
"SubID": "200",
"Descript": "Sub 2"
}
]
}
在我的WPF应用程序中,Customers
和Subs
将有ObservableCollection
。因此,我认为我可以获取整个JSON
,解析出我需要的对象,进行更新,然后更新对象以将更改保存在JSON
中,如下所示;
JObject mainJson = JObject.Parse(File.ReadAllText("MyJSON.json"));
JObject cust = (JObject)mainJson["Customers"];
myColllection = JsonConvert.DeserializeObject<ObservableCollection<Customers>>(cust.ToString());
///Do update logic
cust = JObject.Parse(JsonConvert.SerializeObject(myColllection));
File.WriteAllText("MyJSON.json", mainJson.ToString());
问题是cust总是null。我不知道我做错了什么。还有,我应该用别的方法吗?
代码的问题是mainJson["Customers"]
是一个数组而不是一个jobobject。将代码更改为
JArray cust = (JArray)mainJson["Customers"];