[英]Deserialize JSON with null values in array
我有以下JSON數組,該數組還可以保存var數組中某些元素的空值。 var數組中的元素始終是固定的。
"vars": [
{
"varCol": [
{
"visible": false,
"val": 1,
},
{
"visible": false,
"val": 5,
},
{
"visible": false,
"val": 5,
},
null
],
"Type": "Type1"
"UniqueId": "ID1"
},
{
"varCol": [
{
"visible": true,
"val": 1,
},
null,
{
"visible": false,
"val": 5,
},
null
],
"Type": "Type2",
"UniqueId": "ID2"
}
]
我有以下C#反序列化器類:
public class Var
{
public int VarId { get; set; }
public string Type { get; set; }
public List<VarCol> VarCols { get; set; }
}
public class VarCol
{
public int VarColId { get; set; }
public bool Visible { get; set; }
public float Val { get; set; }
}
我想要的輸出是在VarCol中有一個條目,該條目始終保持數組中值的固定結構。 在這種情況下,每個vars元素在varCol數組中有4個條目。 對於JSON的反序列化,我正在使用:
Var v = JToken.Parse(json_string).ToObject<Var>();
我想插入此內容作為注釋,但是它太長了,因此我必須將其發布為答案。
請注意逗號,因為您的JSON無效。 我想您想要這樣的東西:
{
"vars": [
{
"varCol": [
{
"visible": false,
"val": 1
},
{
"visible": false,
"val": 5
},
{
"visible": false,
"val": 5
},
null
],
"Type": "Type1",
"UniqueId": "ID1"
},
{
"varCol": [
{
"visible": true,
"val": 1
},
null,
{
"visible": false,
"val": 5
},
null
],
"Type": "Type2",
"UniqueId": "ID2"
}
]
}
祝你今天愉快,
阿爾貝托
不確定您要實現什么,因為JToken.Parse()處理null
值的方式與其他任何對象值的方式幾乎相同,因此varCol
將始終具有4個元素。
這是一些測試代碼: http : //dotnetfiddle.net/9gGdH9
抱歉,我的問題有誤導性。 我面臨的問題是通過Entity Framework將Var集合中的空VarCol保存到數據庫。 因為我有一個固定的大小列表,所以我需要這個才能知道集合中的哪個元素為空,我通過用一個空的VarCol實例化null VarCol來解決此問題,Alex Skalozub在他的評論之一中也指出了這一點:
這取決於對象在數據庫中的存儲方式。 如果VarCol與Var具有多對一關系,EF可能會將對Var記錄的引用存儲在VarCol表中。 但是無法將空記錄保存到數據庫。 這就是為什么回讀將僅帶來那些已保存的記錄的原因。 在保存到數據庫之前,解析JSON后可能需要進行一些后處理,以將空值替換為空記錄。 – Alex Skalozub 5小時前
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.