Как динамически создать массив json для почтового запроса HttpClientC#

Место общения программистов C#
Ответить
Anonymous
 Как динамически создать массив json для почтового запроса HttpClient

Сообщение Anonymous »


У меня есть список, содержащий некоторые идентификаторы и варианты продуктов, которые мне нужно просмотреть и добавить в качестве элементов строки в массив json, который будет содержимым для http-запроса, который я выполняю в asp.net core 7. Я изо всех сил пытаюсь как мне построить этот массив в таком формате:

public async Task CreateOrder(string DomainUri, string BasicAuthString, WoocommerceOrder woocommerceOrder) { пытаться { var orderDataJSON = новый StringContent(JsonSerializer.Serialize(new { платеж_метод = "jsjs", Payment_method_title = "хххх", set_paid = правда, биллинг = новый { первое_имя = "", фамилия = "", адрес_1 = "", адрес_2 = "", город = "", состояние = "", почтовый индекс = "", страна = "", электронная почта = "", телефон = "", }, доставка = новый { первое_имя = "", фамилия = "", адрес_1 = "", адрес_2 = "", город = "", состояние = "", почтовый индекс = "", страна = "" }, line_items = новый { // это массив объектов, которые мне нужно динамически перебрать, чтобы добавить из списка // т. е. line_items:[{product_id: 1,variation_id: 2},{product_id: 2,variation_id: 4}] } })); вар httpRequestMessage = новый HttpRequestMessage { Метод = HttpMethod.Post, RequestUri = новый Uri($"{DomainUri}/wp-json/wc/v3/orders"), Content = новый StringContent(JsonSerializer.Serialize(orderDataJSON), Encoding.UTF8, "application/json") }; вар httpClient = _httpClientFactory.CreateClient(); httpClient.DefaultRequestHeaders.Authorization = новое AuthenticationHeaderValue («Basic», BasicAuthString); вар httpResponseMessage = ждут httpClient.SendAsync(httpRequestMessage); если (httpResponseMessage.IsSuccessStatusCode) { вар содержимое = ждут httpResponseMessage.Content.ReadAsStringAsync(); вар woocommerceResponse = JsonSerializer.Deserialize(содержимое); вернуть woocommerceResponse; } } поймать (Исключение ex) { _logger.LogInformation("Сообщение: Ошибка: " + ex.ToString(), DateTime.UtcNow.ToLongTimeString()); бросать; } вернуть woocommerceOrder; } Как вы увидите в строке_items, я понятия не имею, как это сделать. По сути, woocommerceOrder содержит объект line_item, который представляет собой List, и мне нужно пройти через него. Меня устраивает цикл, но не в контексте создания этой переменной данных. Я видел, как люди собирали данные json с использованием класса Dictionary, но приведенный ниже подход кажется простым способом сделать это и выглядит как настоящий json по сравнению с классом Dictionary, который я затем сериализую. Это кажется более естественным, но я не знаю, как сделать в нем цикл.

Кроме того, правильна ли моя реализация обработки данных с помощью httpclient? В большинстве примеров, которые я вижу, используется PostAsync, но я предпочитаю использовать SendAsync, поскольку он кажется более чистым, поскольку он соответствует подходу для моего запроса Get, которому я следовал в примерах MS.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»