【问题标题】:How to use string.Format with curly brackets如何使用带大括号的 string.Format
【发布时间】:2022-11-30 15:23:49
【问题描述】:

我想创建一个 json 字符串,其中包含具有以下结构的长值列表: {“document_ids”:[23461504,20639162,20395579]}

我用下面的行解决了这个问题,但我觉得我可以用一个更干净的命令(string.Format)来做到这一点。

var json = "{\"document_ids\":" + JsonConvert.SerializeObject(My List<long>) + "}";

但是我用 string.Format 写的命令给出了错误信息。

var json = string.Format("{\"document_ids\":{0}}", JsonConvert.SerializeObject(My List<long>));

我收到此错误消息。 System.FormatException:“输入字符串的格式不正确。”

【问题讨论】:

  • 你试试var json = string.Format("{\"document_ids\":{0}}", JsonConvert.SerializeObject(MyList));
  • 是的,我做了但是它给出了错误

标签: c# json string serialization string.format


【解决方案1】:

不要手动组装 json 字符串。已经有一些有用的课程可以为您提供最大的帮助。例如,只需使用 System.Text.Json.JsonSerializer 类。

一个完整的工作示例是这样的:

internal class Program
{
    static void Main( string[] args )
    {
        var myData = new MyData()
        {
            MyListOfLongs = new List<long>() { 23461504, 20639162, 20395579 }
        };

        var jsonString = JsonSerializer.Serialize( myData, new JsonSerializerOptions() { WriteIndented = true } );
    }
}

public class MyData
{
    [JsonPropertyName( "document_ids" )]
    public List<long> MyListOfLongs
    { get; set; }
}

变量jsonString 包含你想要的 json 字符串 ^^

如果您想再次反序列化字符串,请再次查看类 System.Text.Json.JsonSerializer ...它还包含一个 Deserialize 方法。

【讨论】:

    【解决方案2】:

    您可以序列化具有此类 document_ids 属性的匿名对象。

    var numbers = new List<long> { 23461504, 20639162, 20395579 };
    
    var json = JsonConvert.SerializeObject(
        new
        {
            document_ids = numbers
        });
    

    【讨论】:

      猜你喜欢
      • 2011-12-29
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 2011-10-30
      • 1970-01-01
      • 2021-07-15
      相关资源
      最近更新 更多