Анализ JSON в RestSharp возвращает «System.NullReferenceException: ссылка на объект не установлена ​​на экземпляр объектC#

Место общения программистов C#
Ответить
Anonymous
 Анализ JSON в RestSharp возвращает «System.NullReferenceException: ссылка на объект не установлена ​​на экземпляр объект

Сообщение Anonymous »

Я создаю пользовательский интерфейс, в котором пользователь вводит символ/тикер акции и нажимает кнопку, чтобы получить данные об акции, такие как цена открытия, максимум, минимум и цена закрытия. Я использую все это через API Alpha Vantage. Эта ссылка показывает данные JSON вызова API, который я использую в этом вопросе ежедневно за последние 100 дней на акциях Microsoft. Чтобы получить каждый из последних 100 рабочих дней (или дней недели: с понедельника по пятницу) с сегодняшнего дня, я использую этот код C#:

Код: Выделить всё

public List GetDatesBetween(DateTime start, DateTime end, params DayOfWeek[] weekdays)
{
bool allDays = weekdays == null || !weekdays.Any();
var dates = Enumerable.Range(0, 1 + end.Subtract(start).Days)
.Select(offset => start.AddDays(offset))
.Where(d => allDays || weekdays.Contains(d.DayOfWeek))
.ToList();
return dates;
}
А затем я перебираю значения списка функции GetDatesBetween(), передавая правильно отформатированные даты в метод JObject.Parse() для получения JSON из запроса GET клиента RestSharp:

Код: Выделить всё

using RestSharp;
using Newtonsoft.Json.Linq;
using FluentDateTime;

var client = new RestClient(String.Format("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol={0}&apikey={1}",
TextBox89.Text, "MY_API_KEY"));
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
List lst = GetDatesBetween(DateTime.Now.SubtractBusinessDays(100), DateTime.Now,
DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday);
foreach (var date in lst)
{
var open = JObject.Parse(response.Content)["Time Series (Daily)"][date.ToString("yyyy-MM-dd")]["1. open"];
}
За исключением того, что я продолжаю получать сообщение «System.NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта» для этой строки:

Код: Выделить всё

var open = JObject.Parse(response.Content)["Time Series (Daily)"][date.ToString("yyyy-MM-dd")]["1. open"];
Я проверил вывод кода date.ToString("гггг-ММ-дд"), и он аналогичен формату JSON из Alpha Vantage, например, сегодняшнее время "2020-01-12". Я также попробовал ввести строку даты, и это сработало:

Код: Выделить всё

var open = JObject.Parse(response.Content)["Time Series (Daily)"]["2020-01-10"]["1. open"];
Что я делаю не так? Есть ли какая-то синтаксическая проблема со строкой? Извините, если эта сложная проблема кажется не по теме, но я был бы очень признателен за помощь, поскольку в последнее время это меня очень расстраивает. Чтобы помочь мне решить эту проблему, перейдите по ссылке выше в формате JSON.

Подробнее здесь: https://stackoverflow.com/questions/597 ... ct-referen
Ответить

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

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

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

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

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