【问题标题】:How to pass an array to a string.Format() string when construct a Json string构造 Json 字符串时如何将数组传递给 string.Format() 字符串
【发布时间】:2016-04-05 05:19:03
【问题描述】:

我的代码如下:

string requestBody = string.Format(
             @"{{
                   ""RequestServerVersion"":""2016.04.05"",
                   ""PreferredDate"":""{0}"",
                   ""StaffList"":""{1}""
               }}",
             preferredDate.Date.ToString("yyyy-MM-dd"),
             "test");

StaffList 是一个字符串数组,如果我传递一个像“test”这样的字符串,它将不起作用。如何在 string.Format(...) 中将字符串数组传递给它?由于在服务器端,StaffList 是作为字符串数组处理的。

非常感谢!

【问题讨论】:

  • 您可以将数组内容转换为 JSON 字符串,然后将其传递给 String.Format。看最后一个答案here

标签: c# arrays json string.format


【解决方案1】:

如果有好的库可以确保它正常工作,我会避免滚动您自己的 JSON。

Newtonsoft.Json试试这个:

string[] staffList = new [] { "Alice", "Bob", "Charlie" };
DateTime preferredDate = DateTime.Now;

var data = new
{
    RequestServerVersion = "2016.04.05",
    PreferredDate = preferredDate.Date.ToString("yyyy-MM-dd"),
    StaffList = staffList,
};

string requestBody = Newtonsoft.Json.JsonConvert.SerializeObject(data);

这个输出:

{ "RequestServerVersion":"2016.04.05", "PreferredDate":"2016-04-05", "员工名单":["爱丽丝","鲍勃","查理"] }

【讨论】:

  • 感谢 Enigmativity。这很有帮助。
【解决方案2】:

我想到了两件事:

  1. 尝试使用 string.Join() 将数组加入单个字符串,并使用 string.Split() 在服务器端拆分字符串
  2. 在您的代码中使用 JSON 数组语法,循环遍历每个数组索引并按以下语法将它们一一插入:http://www.w3schools.com/json/json_syntax.asp

顺便说一句:您是否考虑过使用 序列化 而不是自己构建 JSON?

【讨论】:

  • 谢谢,詹尼克。我将通过将其标记为已回答来结束此问题。
  • 很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2016-10-25
  • 2022-11-26
  • 1970-01-01
  • 2019-10-30
  • 2018-11-25
  • 1970-01-01
相关资源
最近更新 更多