【问题标题】:Convert C# Typed List to JSON Array with specified property将 C# 类型化列表转换为具有指定属性的 JSON 数组
【发布时间】:2021-07-01 15:43:50
【问题描述】:

我想将字符串列表转换为请求的 JSON 数组。

代码:

using (var client = new HttpClient())
        {
            var json = JsonSerializer.Serialize(isins);
            var content = new StringContent(json, Encoding.UTF8, "application/json");

            var response = await client.PostAsync(_BaseUri, content);

            return response;
        }

有人建议我使用 .NET 的内置库来序列化我的列表,结果如下所示。

电流输出:

{
  ["GG00B933LL68","US88688T1007"]
} 

但是,当我将它传递给 API 时,它需要一个属性名称,在我的例子中是“ISIN”。 我需要创建以下内容,有没有一种无需构建模型即可提供属性名称的快速方法?

期望的输出:

{
  "ISIN": ["GG00B933LL68","US88688T1007"]
}

感谢您对此的任何帮助!

【问题讨论】:

  • 用一个List<string>字段名称ISIN创建一个类的实例,将您现在拥有的isins变量设置为该字段,然后序列化该类。
  • 这能回答你的问题吗? Create Json dynamically in c#
  • 只需构建一个字典:var dict = new Dictionary<string, List<string>> { { "ISIN", new List<string>() { "GG00B933LL68", "US88688T1007" } } }; 并对其进行序列化。
  • JsonSerializer.Serialize(new { "ISIN" : isins });

标签: c# json


【解决方案1】:

结果如下所示

确实类似 - 我想不出一种方法可以将一些东西放入序列化程序并得到一个包含在 { } 中的单个数组 - 如果 isins 是一个可枚举的字符串,则 {} 不会'不会在输出中看到,如果 isins 更复杂,则数组应以属性名称为前缀。

总之,这里的火箭器具不多..

无需构建模型即可提供属性名称的快速方法

当然,让编译器让你成为匿名类型:

var isins = new[] { "GG00B933LL68","US88688T1007" };
var json = JsonSerializer.Serialize(new{ ISINS = isins});

【讨论】:

    猜你喜欢
    • 2016-12-28
    • 1970-01-01
    • 2015-09-22
    • 2020-07-03
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多