c# - 如何将 JsonProperty 附加到另一个 JsonProperty
问题描述
我有这个看起来像这样的 JsonDocument
string jsonString = "{\"year\": 0, \"class\": [], \"schools\": []}";
JsonDocument newSchema = JsonDocument.Parse(jsonString)
还有一堆 JSON 文件,其中包含这些属性。每个 JSON 文件都有相同的year
内容,但包含一个特定class
和一个特定的信息school
。旁边没有一个是相同的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"
]
}
推荐阅读
- javascript - 在控制台中接收单个 React 元素子元素
- perl - 在 Perl 中取消引用多维数组的正确方法是什么?
- python - 来自随机 Panda Dataframe 数据的字符串列表
- visual-studio-code - 如何直接在编辑器中呈现错误/警告
- .net - 如何在不使用 Authorize 属性的情况下获取 User.Identity 值?
- outlook - 您能否将共享收件箱添加到 Outlook for Mac?
- c# - 我在设计编辑器中编码的不是我在输出中得到的
- unity3d - 允许 NavMeshAgent 相互穿行
- elixir - Kernel.--/2 奇怪的行为
- mysql - 使用 JOIN 返回错误删除多个表中的行