Как объединить все страницы ответа веб-API JSON в один вывод для записи в файл на C#?C#

Место общения программистов C#
Ответить
Anonymous
 Как объединить все страницы ответа веб-API JSON в один вывод для записи в файл на C#?

Сообщение Anonymous »

Ниже приведен небольшой пример ответа, который я получаю при вызове стороннего веб-API. В этом примере ответ на параметры моего запроса возвращает в общей сложности 4 страницы данных, при этом максимальный размер каждой страницы равен 100:
Изображение

Ниже приведен пример моего основного кода консольного приложения C#, который я использую для получения токена авторизации API и запуска запроса данных. , проверьте статус запроса, а затем получите данные ответа в завершенном запросе. Мне удалось успешно зациклить ожидание общего количества страниц в ответе и записать каждую страницу ответа как отдельный файл (JSON).
Каждая страница данных занимает около 5100 КБ. по размеру. В идеале я хочу записать только один файл в правильном формате JSON, содержащий все страницы данных ответа в одном файле.
Кто-нибудь знает, как это сделать?
static async Task Main(string[] args)
{
string currentDateTime = DateTime.Now.ToString("yyyyMMdd_HHmmss");
string LogFolder = "";
DateTime startDate, endDate;

// For direct Debugging:
startDate = Convert.ToDateTime("11/07/2024");
endDate = Convert.ToDateTime("11/08/2024");
LogFolder = Convert.ToString("C:\\Users\\UserName\\Downloads");

try
{
Program prm = new Program();
string beginDate = prm.formatStartDate(startDate);
string cutoffDate = prm.formatEndDate(endDate);
string token = await prm.1_Get_Authorization_Token();
int pageNumber = 1;
string interactionRequestID = await prm.2_Trigger_Data_Request(token, beginDate, cutoffDate, pageNumber);
// Need a little buffer time for the request to process. Original 5 seconds was resulting in 403 (Forbidden) often for date ranges greater than 24hrs.
Thread.Sleep(30000);
string interDataURL = await prm.3_Get_Request_Status_and_URL(token, interactionRequestID);
string interJSONData = await prm.4_Get_Data(interDataURL);

// returns first page of results by default
if (interJSONData.Length > 0)
{
using (StreamWriter sw = File.CreateText(LogFolder + "\\" + "Data_Page_" + pageNumber + "_" + startDate.ToString("MMddyyyy") + "-" + endDate.ToString("MMddyyyy") + ".json"))
{
sw.WriteLine(JObject.Parse(interJSONData));
}
}

int total_page_number_index = interJSONData.IndexOf("total_pages\":") + 13;
int total_pages = Convert.ToInt32(interJSONData.Substring(total_page_number_index, 1));

// need to recall Inter2-4 to get next page of data?
if (total_pages > 1)
{
pageNumber++;

while (pageNumber

Подробнее здесь: https://stackoverflow.com/questions/791 ... or-writing
Ответить

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

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

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

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

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