如何将 JsonProperty 附加到另一个 JsonProperty

How do I append an JsonProperty to another JsonProperty

我有这个 JsonDocument,看起来像这样

string jsonString = "{\"year\": 0, \"class\": [], \"schools\": []}";
JsonDocument newSchema = JsonDocument.Parse(jsonString)

还有一堆 JSON 文件,其中列出了这些属性。 每个 JSON 文件都有相同的 year,但包含一个特定 class 和一个特定 school 的信息。其中None除了year.

是一样的

我试图创建一个 JsonDocument,将所有 class 和学校放在一个 JsonDocument 中,但将 JsonProperty 附加在一起似乎有问题..

这是我目前尝试过的方法:

using (JsonDocument newSchema = JsonDocument.Parse(jsonString))
{
    List<JsonProperty> properties = new List<JsonProperty>();
    foreach(JsonProperty a in newSchema.RootElement.EnumerateObject())
    {
        properties.Add(a);
    }
    foreach (string classandSchoolDefinition in loadableSchemaDefinitions)
    {

        string schemaDefinitionAsJson = File.ReadAllText(classandSchoolDefinition );
        JsonDocument schemaJson = JsonDocument.Parse(schemaDefinitionAsJson);

        foreach (JsonProperty a in schemaJson.RootElement.EnumerateObject())
        {
            switch (a.Name)
            {
                case "year":
                    Console.WriteLine($@"({a.Name}+{a.Value}, {a.Value.ValueKind})");
                    break;
                case "class":
                    Console.WriteLine($@"({a.Name}+{a.Value}, {a.Value.ValueKind})");
                    break;
                case "school":
                    Console.WriteLine($@"({a.Name}+{a.Value}, {a.Value.ValueKind})");
                    break;
                default:
                    break;
            }
        }
    }

如何将每个 Jsonproperty 值合并为一个 newSchema,而不是将其合并为一个?
在这种情况下,我只想将一个数组附加到另​​一个数组。

您可以通过 Newtonsoft.Json

达到此目的

例如,您有

var o1 = JObject.Parse(@"{
  'Name': 'Max',
  'Enabled': false,
  'Roles': [ 'User' ]
}");

和另一个对象

var o2 = JObject.Parse(@"{
  'Enabled': true,
  'Roles': [ 'User', 'Admin' ]
}");

像这样简单地使用合并功能 -

o1.Merge(o2, new JsonMergeSettings
{
    // to avoid duplicates
    MergeArrayHandling = MergeArrayHandling.Union
});

结果将是-

{
   "FirstName": "Max",
   "Enabled": true,
   "Roles": [
      "User",
      "Admin"
  ]
}