c# - 在 C# 中连接两个 json 字符串

标签 c# json

假设我有两个 JSON 字符串开始: (示例来自 json.net)

string json1 = @"{
  'Name': 'Bad Boys',
  'ReleaseDate': '1995-4-7T00:00:00',
  'Genres': [
    'Action',
    'Comedy'
  ]
}";

and 

string json2 = @"{
  'Name': 'Good Ol Boys',
  'ReleaseDate': '2995-4-7T00:00:00',
  'Genres': [
    'Action',
    'None'
  ]
}";

将这两个json串拼接成一个json串的方法是什么?我在这里查看了几个不同的项目,但它们不符合要求,主要是因为它们将两个对象合并为一个对象——我还没有看到很多只在一个字符串中给我两个对象的项目。我找到了 this answer ,但它适用于 javascript,而不是 C#。然而,它接近我想要的。

标记为 similar question 的正确答案不包含任何解释,也没有足够的代码来为我提供适当的上下文来理解它。而且它更接近我想要做的事情,因为它里面有“数据”元素......而票数较多的答案合并并以某种方式覆盖我的一个对象,给我留下一个,而不是两个。

我还没有准备好反序列化字符串,因为我不知道我会提前获得多少对象。换句话说,我想把所有的json对象字符串放到一个大字符串中,然后我可以一次反序列化整个字符串。

我该怎么做?

编辑

原来我问的是如何连接两个数组,这根本不是一回事。所以我的问题是错误的。 This answer是我上面提到的问题的答案。我最终做的是反序列化每个数组,然后执行 AddRange(d2.data) 方法,然后重新序列化,这样我就可以将整个数组反序列化为一个大的 JSON 对象。然后我在其他地方使用它。

还有一件事 - C# 将字符串视为字符串,但即使 JSON 对象在技术上是字符串,但它们实际上不是,这是我困惑的一部分。我也不明白 JSON 对象是如何工作的,就什么是数组和什么是字符串而言……我在 SO 上看到了一些答案,基本上是说要确保您了解 JSON 中的对象等。无论如何。 ..问题解决了。

最佳答案

可能有点矫枉过正,但在数据格式错误的情况下,您一定会得到有意义的错误,否则您会得到有效的 JSON。

var arrayOfObjects = JsonConvert.SerializeObject(
    new[] { JsonConvert.DeserializeObject(json1), JsonConvert.DeserializeObject(json2) }
)

我们将每个json对象反序列化为object(这样我们就不需要关心结构),将其包裹在一个object[]中,再序列化回来成 JSON。除非您要解析大量 对象,否则这应该具有足够的性能。

关于c# - 在 C# 中连接两个 json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43036654/

相关文章:

c# - 在 C# WPF 桌面应用程序中将 MSAL 与身份验证上下文结合使用

c# - .net 中 dll 的强名称

JSONObject 删除小数点,如果是整数

c# - 如何从数据列表创建 json 结构?

c# - 如何解决错误 AADSTS7000218 : The request body must contain the following parameter: 'client_secret' or 'client_assertion'

c# - AzureServiceTokenProvider异常: Tried to get token using Managed Service Identity.发送请求时发生错误

c# - IServiceRepository 中的存储库模式 IRepository<T>

javascript - 无法读取未定义的 Angular JS 的属性 'push'

json - JMS 将 ArrayCollection 序列化为对象

json - 如何使用脚本更改 Deployment 的 ConfigMap?