[英]Json deserialization with multiple json file for Multiplicity relationship
我有一個 object model 如下,一些對象有零個或多個關系
public class Foo
{
public string Id
public string Name
}
public class Bar
{
public string Id
public Foo Foo
public DateTime At
}
public class Baz
{
public string Id
public DateTime At
public List<Bar> Bars
}
public class Qux
{
public string Id
public string Name
public List<Baz> Baz
}
我需要反序列化以下 4 個 json 文件。
Foo.json
[
{
"Id": "1",
"Name": "AAA"
},
{
"Id": "2",
"Name": "BBB"
}
]
酒吧.json
[
{
"Id": "1",
"FooId": "1",
"BazId": "1",
"At": "2022-01-01T10:00:00"
},
{
"Id": "2",
"FooId": "2",
"BazId": "1",
"At": "2022-01-02T10:00:00"
}
]
Baz.json
[
{
"Id": "1",
"Quxd": "1",
"At": "2022-01-01T10:00:00"
},
{
"Id": "2",
"QuxId": "1",
"At": "2022-01-02T10:00:00"
}
]
Qux.Json
[
{
"Id": "1",
"Name": "CCC"
},
{
"Id": "2",
"Name": "DDD"
}
]
我知道這是一個設計糟糕的 JSON 文件,我無法更改它,這是我在不更改 json 的情況下解決它的挑戰。
我能夠通過為每個 JSON 再創建 4 組對象並分別反序列化它們來解決這個問題,之后,我將為 object4 循環到 map 所有其他對象。
但我覺得效率不高。
如果您有任何其他想法,請告訴我,以便我可以更好地解決這個問題。
謝謝
我認為另一種方法可能是合並 json 文件,然后將它們反序列化為類:
JObject o1 = JObject.Parse(@"{
'FirstName': 'John',
'LastName': 'Smith',
'Enabled': false,
'Roles': [ 'User' ]
}");
JObject o2 = JObject.Parse(@"{
'Enabled': true,
'Roles': [ 'User', 'Admin' ]
}");
o1.Merge(o2, new JsonMergeSettings
{
// union array values together to avoid duplicates
MergeArrayHandling = MergeArrayHandling.Union
});
這是格式錯誤的 json,所以請忽略
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.