如何在构造Json字符串时将数组传递给string.Format()字符串

时间:2016-04-05 05:19:03

标签: c# arrays json string.format

我的代码如下:

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

StaffList是一个字符串数组,如果我传递像“test”这样的单个字符串,它将无效。如何在string.Format(...)中将字符串数组传递给它?因为在服务器端,StaffList被处理为字符串数组。

非常感谢!

2 个答案:

答案 0 :(得分:2)

当有好的库可以确保它正常工作时,我会避免滚动你自己的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",
    "StaffList":["Alice","Bob","Charlie"]
}

答案 1 :(得分:0)

我想到了两件事:

  1. 尝试使用string.Join()将Array连接到单个字符串,并使用string.Split()
  2. 在服务器端拆分字符串
  3. 在代码中使用JSON Arrays语法,遍历每个Array索引并按照以下语法逐个插入:http://www.w3schools.com/json/json_syntax.asp
  4. 顺便说一句:您是否考虑过使用序列化而不是自己构建JSON?