Я пишу клиент C# для стороннего API (я использую пакет RestSharp nuget). В их документации содержатся примеры PHP, которые я должен перевести на C#. Большинство их образцов достаточно просты, и я смог преобразовать их в C#, но я борюсь с одним из них, потому что он принимает массив массивов. Вот пример из их документации:Преобразование массива массивов PHP в C#
$params = array (
'user_key' => 'X',
'client_id'=> 'X,
'label' => array(
array(
'language' => 'en_US',
'name' => 'English label',
),
array(
'language' => 'fr_CA',
'name' => 'French label',
),
),
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.3rdparty.com/xxx/yyy');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('apikey: YOURAPIKEY'));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
Вот что я до сих пор:
var labels = new Dictionary<string, string>()
{
{ "en_US", "English Label" },
{ "fr_CA", "French Label" }
};
var request = new RestRequest("/xxx/yyy", Method.POST) { RequestFormat = DataFormat.Json };
request.AddHeader("apikey", myApiKey);
request.AddParameter("user_key", myUserKey);
request.AddParameter("client_id", myClientId);
request.AddParameter("label", ???);
var client = new RestSharp.RestClient("https://api.3rdparty.com")
{
Timeout = timeout,
UserAgent = "My .NET REST Client"
};
var response = client.Execute(request);
Кто-нибудь знает, как преобразовать «метки» словарь в формат, который был бы эквивалентен http_build_query РНР?
Отлично! Спасибо. – desautelsj
Кстати, мне очень нравится, как вы переформатируете список, чтобы включить индекс каждого элемента. Гораздо удобнее объявлять целое число и увеличивать его на единицу в каждом цикле. – desautelsj