c# - 将 JSON 字符串添加到 C# 中的现有字符串

标签 c# json.net

我正在尝试向现有字符串添加 JSON 字符串,但仍然无法成功。

这是原始字符串:originalJSONString

{
  "properties": [
    "property1",
    "property2"
  ]
}

我想将此添加到原始字符串中:JSONStringIwantToAdd
{
  "filter": {
    "Name": "some filter name",
    "Parameters": {
      "LookupKey": "somekey",
      "LookupValue": "somevalue"
    }
  }
}

要生成这样的结果字符串:finalJSONString
{
  "properties": [
    "property1",
    "property2"
  ],
  "filter": {
    "Name": "some filter name",
    "Parameters": {
      "LookupKey": "somekey",
      "LookupValue": "somevalue"
    }
  }
}

到目前为止,这是我的方向,但我在 propertiesJObject 中为空并且事后想不通。

这甚至是我要去的正确方向吗?
        var originalJObj = JObject.Parse(originalJSONString);
        var tobeaddedJObj = JObject.Parse(JSONStringIwantToAdd);
        var propertiesJObject = originalJObj["properties"] as JObject;
        propertiesJObject.Add(tobeaddedJObj);
        var serializer = new JsonSerializer { ContractResolver = new CamelCasePropertyNamesContractResolver() };
        var finalJSONString = JObject.FromObject(originalJObj, serializer).ToString();

有人可以帮我解决这个问题吗?

感谢您的时间!

最佳答案

JSON.NET 包含的功能可以完全满足您的需求:JContainer.Merge

请注意, Merge 会修改原始对象,而不是返回一个新对象:

var original = JObject.Parse(@"{
  ""properties"": [
    ""property1"",
    ""property2""
  ]
}");

var toAdd = JObject.Parse(@"{
  ""filter"": {
    ""Name"": ""some filter name"",
    ""Parameters"": {
      ""LookupKey"": ""somekey"",
      ""LookupValue"": ""somevalue""
    }
  }
}");

original.Merge(toAdd, new JsonMergeSettings
{
    // union array values together to avoid duplicates
    MergeArrayHandling = MergeArrayHandling.Union
});

fiddle 链接:https://dotnetfiddle.net/o51GuA

关于c# - 将 JSON 字符串添加到 C# 中的现有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62292075/

相关文章:

c# - 在 C# 中如何从公司的域/网络设置中获取用户信息?

c# - 序列化 LINQ to SQL 类时出现循环引用异常

c# - 如何处理 UWP、MVVM 的子列表中的 ItemClick 事件?

c# - 将 ActivSync 4.5 与 Visual Studio 2005 安装项目捆绑在一起

c# - LINQ to SQL 划分筛选器以获得更好的性能

c# - 根据组对 LINQ 分组查询进行排序

c# - 在 JSON 中找不到必需的属性 'probability'。小路

c# - Json.NET C# : JToken. Parent 始终为 null

c# - Newtonsoft反序列化对象

c# - 将任意 json 响应转换为 "things"列表