如何将 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"
]
}
我有这个 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"
]
}