如何在不使用 C# 中的 T 对象的情况下将 Json 数组转换为单个 JSON 对象?

Posted

技术标签:

【中文标题】如何在不使用 C# 中的 T 对象的情况下将 Json 数组转换为单个 JSON 对象?【英文标题】:How to Convert Json Array to Single JSON object without using T object in C#? 【发布时间】:2020-08-23 18:17:12 【问题描述】:

我正在寻找一种将 Json 数组 [,] 转换为 object => [] 的单线器。

我有以下序列化的 JSON 字符串,

 [
  
    "Address": "Adresse"
  ,
  
    "AddressDetails": "Détails de l'adresse"
  ,
  
    "BackToLoginPage": "Retour à la page de connexion"
  
]

现在我想在不使用一种类型或模型对象的情况下将其转换为以下格式,因为数据是动态的,它将包含 1000 个字段,所以我无法创建具有动态属性的模型类型对象。那么有没有办法将它转换成一个单一的 JSON 对象/字符串?它看起来很简单,但我无法转换它。

[
    "Address": "Adresse",      
    "AddressDetails": "Détails de l'adresse",      
    "BackToLoginPage": "Retour à la page de connexion"
]

【问题讨论】:

你的最后一个例子是无效的 JSON =) 这一行够吗? result = Regex.Replace(json,@",||",""),虽然我不推荐它。另外,我不建议只要求一行答案,或者不尝试就写问题 【参考方案1】:

Newtonsoft.Json.Linq 可以解析/处理没有模型的 JSON (JObject/JArray)。 这是一个班轮:

var mergedJson = new JObject(JArray.Parse(json).OfType<JObject>().SelectMany(o => o.Properties()).GroupBy(p => p.Name).Select(grp => grp.First())).ToString();

【讨论】:

以上是关于如何在不使用 C# 中的 T 对象的情况下将 Json 数组转换为单个 JSON 对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用ViewData的情况下将对象属性绑定到DropDownList中的数据源

C#如何在不知道新数组长度的情况下将数组中的值保存到新数组中

如何在不复制 C# 的情况下将结构数组元素提取到变量中?

如何在不写入磁盘的情况下将 XML 从 Delphi 传递到 C#?

我应该如何在不使用 C++ 中的构造函数的情况下将值(不是指针)转换为子类?

如何在不覆盖以前数据的情况下将数据添加到 XML 文件(C#)