所以我試圖通過讀取json對象作爲JObject來控制反序列化,刪除一些字段,然後反序列化它再次使用Json.Net對我的目標對象。問題是,任何時候我嘗試刪除字段,我得到的錯誤:在Json.net中得到錯誤「無法從Newtonsoft.Json.Linq.JProperty中添加或刪除項目」
An unhandled exception of type 'Newtonsoft.Json.JsonException' occurred in Newtonsoft.Json.dll
Additional information: Cannot add or remove items from Newtonsoft.Json.Linq.JProperty.
這裏是我(簡化,但仍導致錯誤)代碼:
JToken token = (JToken)JsonConvert.DeserializeObject(File.ReadAllText(fileName));
foreach (JToken inner in token["docs"])
{
if (inner["_id"] != null)
inner["_id"].Remove();
MyObject read = new MyObject();
JsonConvert.PopulateObject(inner.ToString(), read);
Values.Add((MyObject)JsonConvert.DeserializeObject(inner.ToString(), typeof(MyObject)));
}
的JSON是一個很大文件,其中的文檔數組包含如下許多元素(再次簡化爲清楚起見):
{
"docs": [
{
"Time": "None",
"Level": 1,
"_id": "10208"
},
{
"Time": "None",
"Level": 1,
"_id": "10209"
}
]
}
或者,如果有更好的方法來反序列化JSON特定類型,但還是忽略了其他字段,塔噸將是一個很好的選擇。
請張貼您的JSON –
我不確定它是否相關,因爲我們知道inner [「id」]不是null,但我已經把它放在了問題上。 – Miguel