2016-04-05 2 views
1

Мой код ниже:Как передать массив в string.Format() строку, если построить строку JSON

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

StaffList является массив строк, если я прохожу одну строку, как «тест», это не сработает. Как передать строковый массив в строку .Format (...)? Поскольку на стороне сервера StaffList обрабатывается как массив Array.

Большое спасибо!

+0

Вы можете преобразовать содержимое массива в JSON строку, а затем передать его в String.Format. См. Последний ответ [здесь] (http://stackoverflow.com/questions/10387382/how-to-convert-array-with-keys-values-to-json-c-sharp) – Thangadurai

ответ

0

Две вещи, которые приходят мне в голову:

  1. Try присоединиться к массив в одну строку с помощью string.join() и разделить строку на ServerSide с помощью String.split()
  2. Используйте JSON Массивы Синтаксис в коде Цикл по каждому индексу массива и вставить их один за другим в этом синтаксисе: http://www.w3schools.com/json/json_syntax.asp

BTW: Рассматривали ли вы использовать Сериализация вместо создания вашего JSON самостоятельно?

+0

Спасибо, Янник. Я закрою этот вопрос, отметив его ответ. – Ethan

+0

Рад, что я мог бы помочь. – Jannik

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"] 
} 

+0

Спасибо Enigmativity. Это полезно. – Ethan

Смежные вопросы