這是我的目標,我想從源檢索JSON數據,反序列化爲對象,根據值過濾出對象,最後將其序列化回到JSON字符串格式。這裏是(一個例子),我有什麼對JSON數據:反序列化嵌套的JSON到類/對象中,然後 - 將其序列化回字符串
[
{
"property":"prop1",
"status" : {
status1: "A",
status2: -1,
status3: "Success",
},
"offlist":[
{
"description":"description blah",
"type":"F",
"values":{
"value1":30.0,
"value2":0.0
}
},
{
"description":"description blah",
"type":"F",
"values":{
"value1":30.0,
"value2":0.0
}
}
]
},
{
"property":"prop2",
"status" : {
status1: "A",
status2: -1,
status3: "Success",
},
"offlist":[
{
"description":"description blah",
"type":"Q",
"values":{
"value1":30.0,
"value2":0.0
}
}
]
}
]
這裏是我的課:
public class offerModel {
public List<offlist> offlist { get; set; }
public status statuses { get; set; }
public string property{ get; set; }
}
public class offlist{
public string description{ get; set; }
public string type{ get; set; }
public values values { get; set; }
}
public class values{
public double value1 { get; set; }
public double value2{ get; set; }
}
public class statuses {
public string status1 { get; set; }
public double status2 { get; set; }
public string status3 { get; set; }
}
public class RootObj {
public List<offerModel> offModels { get; set; }
}
在反序列化到對象的嘗試,我得到5個對象後面的列表(意) ,但所有這些對象都是空的。見下圖:
var obj = JsonConvert.DeserializeObject<List<RootObj>>(jsonstring);
然後我想刪除'type'值等於'F'的任何'offlist'對象。
刪除之後,我想再次放入JSON字符串格式,我相信它會與下面非常相似,但我無法以正確的方式將其反序列化。
var json = JsonConvert.SerializeObject(obj);
讓我知道如果我離開的任何細節了......
嘗試 'JsonConvert.DeserializeObject <列表>(jsonstring)',而不是你的JSON根objec t是一個集合,而不是收集字段中的對象的集合 –
ASpirin
解決您的第一個問題。當您發佈的json似乎代表一個'List'時,您正在要求反序列化一個'List '。 如何結束在結果列表中的5個空引用不會立即顯現,因爲您發佈的json看起來代表** two **'offerModel'的數組。 –
Deltics
可能是因爲你的json-status1..3,它們不是字符串,如果這應該是一個合法的json,它會驗證一個。 (必須在引號內) –