Пытаюсь десериализовать json
в класс, но выдает ошибку "Не удается преобразовать объект типа "System.Boolean" в тип "Sell_Offers""
Хочу получить доступ к offers
var rez = new JavaScriptSerializer().Deserialize<Root>(json));
-
{
"success": true,
"results": [
{
"classid": "1812818783",
"instanceid": "188530139",
"sell_offers": {
"best_offer": 324,
"offers": [
[
324,
1
],
[
444,
2
],
[
446,
1
],
[
524,
1
],
[
528,
2
],
[
540,
1
],
[
543,
1
],
[
554,
1
],
[
1498,
2
],
[
1500,
1
]
],
"my_offers": null
},
"buy_offers": null,
"history": null,
"info": {
"our_market_instanceid": null,
"market_name": "P250 | Iron Clad (Немного поношенное)",
"name": "P250 | Iron Clad",
"market_hash_name": "P250 | Iron Clad (Minimal Wear)",
"rarity": "Армейское качество",
"quality": "Немного поношенное",
"type": "Пистолет",
"mtype": "CSGO_Type_Pistol",
"slot": "Обыч."
}
}
]
}
Встроенный генератор в Visual Studio дал следующий код класса
public class Root
{
public bool success { get; set; }
public Result[] results { get; set; }
}
public class Result
{
public string classid { get; set; }
public string instanceid { get; set; }
public object sell_offers { get; set; }
public object buy_offers { get; set; }
public object history { get; set; }
public Info info { get; set; }
}
public class Info
{
public object our_market_instanceid { get; set; }
public string market_name { get; set; }
public string name { get; set; }
public string market_hash_name { get; set; }
public string rarity { get; set; }
public string quality { get; set; }
public string type { get; set; }
public string mtype { get; set; }
public string slot { get; set; }
}
И так, нам надо получить доступ к offers
. Давайте прогоним через этот сайт ваш JSON
. Что видим?
results
, в котором каждый объект содержит в себе отдельный объект sell_offers
. sell_offers
, а в нем у нас нужный нам список offers
, который состоит из массива с последовательным отображением чисел. Давайте все это создадим:
public class Root
{
public Result[] results { get; set; }
}
public class Result
{
public SellOffers sell_offers { get; set; }
}
public class SellOffers
{
public List<List<int>> offers { get; set; }
}
Я не стал тут выводить другие данные, это уже по аналогии думаю сделаете без проблем. Читать данные можете так же, как и делали. Я кстати советую вам использовать JSON.NET библиотеку, хорошая, удобная. Вообще я лично не доверяю конвертеру студии, больше нравится данный сайт, но это уже дело вкусов.
Хорошо, раз у нас один объект может быть то bool
, то список, давайте это проверим. Переделаем public SellOffers sell_offers { get; set; }
на public dynamic sell_offers { get; set; }
, от класса SellOffers
отказываемся и делаем следующее:
foreach (var item in rez.results)
{
var itemType = item.sell_offers.GetType();
if (itemType.Equals(typeof(bool))) continue; //Пропускаем все те, что имеют тип Bool
foreach (var offer in item.sell_offers["offers"])
{
Console.WriteLine($"{offer[0]} - {offer[1]}");
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Ситуация такаяЕсть массив текстбоксов tb[] (на форме их много, допустим начиная с textBox1 по textBox36)
Есть форма в представлении передает данные в контроллер где записываются в БДНужно вернуть в представление Id вставленного обьекта
Имеется парсер, написанный на c#Заметил, что при запуске скорость работы выше, чем, к примеру, через несколько часов