Пытаюсь победить ошибку уже 4 день., уже весь интернет облазил, пересмотрел много решений, но так и не приблизился к решению проблемы :(
Сам код
using System;
using System.Net;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Cryptography;
namespace binance_0._1
{
class Program
{
static void Main(string[] args)
{
//заходим на биржу
String url = "сайт";
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Console.WriteLine(((HttpWebResponse)httpWebResponse).StatusDescription);
//перевод в джонсон
string response;
using (StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream()))
{
response = streamReader.ReadToEnd();
}
//выцепляем из динамического джонсна пары и их назхвания
int pr_btc = 0;
int pr_usd = 0;
dynamic stuff = JsonConvert.DeserializeObject(response);
JObject jObject = (JObject)stuff["symbol"];
List<string> pair_btc = new List<string>(); // массив коинов с BTC
List<string> pair_usd = new List<string>(); // с пары usdt
//выцепляем из динамического джонсoна пары и их назхвания
foreach (var data in jObject)
{
//формируем массив пар с btc
if ((data.Key.Contains("BTC")))
{
pair_btc.Add(data.Key);
pr_btc++;
}
//формируем массив пар с usdt
if ((data.Key.Contains("USDT")))
{
pair_usd.Add(data.Key);
pr_usd++;
}
Console.WriteLine(jObject);
Console.ReadLine();
}
}
}
}
Ошибка происходит в строке
foreach (var data in jObject)
Ругается на переменную jObject
Подскажите пожалуйста в решение проблемы.
JObject jObject = (JObject)stuff["symbol"];
Вы здесь делаете явное приведение к типу JObject
, если приведение не удалось, будет вызвано исключение.
Лучше воспользоваться оператором приведения as
:
var jObject = stuff["symbol"] as JObject;
И проверять этот объект на null
:
if (jObject){
return; //Выход из метода или обработка ошибки
}
Примечание:
Оператор as аналогичен операции приведения. Однако, если преобразование невозможно, as возвращает null, а не вызывает исключение.
Вот подробности ошибки
System.NullReferenceException HResult=0x80004003 Сообщение = Ссылка на объект не указывает на экземпляр объекта. Источник = binance Трассировка стека: в binance_0._1.Program.Main(String[] args) в C:\Users\Kapusta\documents\visual studio 2017\Projects\binance\binance\Program.cs:строка 41
Виртуальный выделенный сервер (VDS) становится отличным выбором
Каким методом реализовать данную функцию? Если touchcounts, то отслеживает только количество нажатий
Есть форма "form" с несколькими строками, не могу сделать, так, чтобы при нажатии на кнопку submit форма не перезагружалась, а просто записала данные...
Собственно, вопрос
О да, я нашел этот кусок, у вас: