我不确定正确的术语,因为对 json 不太了解。我有一个以下固定格式的现有 json 字符串/对象(即所有项目都位于根级别并且具有简单的键/值对,尽管项目的数量可能有所不同):
{
"product_id": "1777",
"license_key": "ECHOES-SILENCE-PATIENCE-AND-GRACE",
"valid_for": "365",
"status": "active",
"times_activated_max": 1
}
Run Code Online (Sandbox Code Playgroud)
我需要一种方法来添加传递到方法中的不同架构/格式的 json 字符串。该对象可以是任何 json 格式。它将被添加到根中。例如添加这个:
{
"name":"John",
"age":30,
"cars":["Ford", "BMW", "Fiat"]
}
Run Code Online (Sandbox Code Playgroud)
..将变成这样:
{
"product_id": "1777",
"license_key": "ECHOES-SILENCE-PATIENCE-AND-GRACE",
"valid_for": "365",
"status": "active",
"times_activated_max": 1
"name":"John",
"age":30,
"cars":["Ford", "BMW", "Fiat"]
}
Run Code Online (Sandbox Code Playgroud)
我可以使用 Newtonsoft.Json 来完成此任务。
我确实读过这篇文章,但无法将其映射到我的问题。
希望有人可以帮忙
JSON.NET 文档有一篇专门针对此内容的文章:合并 JSON。您可以使用JObject.Merge将两个不同的对象合并为一个:
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
});
Run Code Online (Sandbox Code Playgroud)
您发布的是两个对象。JSON 文档可能是文本,但它包含的是数组和对象。“合并”意味着找到一种方法来组合这些对象/数组并生成新的数组或对象。
Merge由JContainer定义,JContainer 是 JObject 和 JArray 的父级。这意味着您可以用来Merge合并数组和对象。
数组的另一种选择是组合Enumerable.Union两个数组的内容,并创建一个新数组:
var array1= JArray.Parse("[1,2,3]");
var array2= JArray.Parse("[3,4,5, \"a\"]");
var array3=new JArray(array1.Union(array2));
Run Code Online (Sandbox Code Playgroud)
这返回[1,2,3,4,5,"a"]
| 归档时间: |
|
| 查看次数: |
14146 次 |
| 最近记录: |