簡體   English   中英

Json 使用多個 json 文件進行多重關系反序列化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM