c# Разбор json к объекту - PullRequest
       0

c# Разбор json к объекту

0 голосов
/ 27 апреля 2020

Мне нужна помощь, чтобы проанализировать остаток json из API IsThereASale для объекта c#, но я застрял из-за макета json:

https://del.dog/orfelefane.json

Здесь мне нужна информация из массива данных.

Вот как я получаю ответ json:

 var client = new RestClient("https://api.isthereanydeal.com/");
 client.UseNewtonsoftJson();

 var request = new RestRequest("https://api.isthereanydeal.com/v01/deals/list/?key=" + Config.apiKey + "&sort=time");
 var json = JsonConvert.DeserializeObject<Dictionary<string, string>>(response.Content);

Как вы можете заметить выше, я Я пытался преобразовать его в словарь, но безуспешно.

1 Ответ

2 голосов
/ 27 апреля 2020

Вы можете использовать онлайн-конвертер для этого

public partial class Orfelefane
{
    public Meta Meta { get; set; }
    public Data Data { get; set; }
}

public partial class Data
{
    public long Count { get; set; }
    public List<List> List { get; set; }
    public DataUrls Urls { get; set; }
}

public partial class List
{
    public string Plain { get; set; }
    public string Title { get; set; }
    public double PriceNew { get; set; }
    public double PriceOld { get; set; }
    public long PriceCut { get; set; }
    public long Added { get; set; }
    public long? Expiry { get; set; }
    public Shop Shop { get; set; }
    public List<Drm> Drm { get; set; }
    public ListUrls Urls { get; set; }
}

public partial class Shop
{
    public Id Id { get; set; }
    public Name Name { get; set; }
}

public partial class ListUrls
{
    public Uri Buy { get; set; }
    public Uri Game { get; set; }
}

public partial class DataUrls
{
    public Uri Deals { get; set; }
}

public partial class Meta
{
    public string Currency { get; set; }
}

public enum Drm { DrmFree, Steam };

public enum Id { Bundlestars, Gog, Itchio, Steam };

public enum Name { Fanatical, Gog, ItchIo, Steam };

наконец

var json = JsonConvert.DeserializeObject<Orfelefane>(response.Content);

РЕДАКТИРОВАТЬ:

Если ваш json не является строго типизированным, я предлагаю вам использовать

var json = JsonConvert.DeserializeObject<dynamic>(response.Content);

Если только указанная c часть вашего json не является stati c, то вы можете заменить эту часть на dynamic

допустим, что содержимое List является динамическим c внутри данных, затем измените

public partial class Data
{
    public long Count { get; set; }
    public List<List> List { get; set; }
    public DataUrls Urls { get; set; }
}

на

public partial class Data
{
    public long Count { get; set; }
    //OR public dynamic List {get; set;}
    public List<dynamic> List { get; set; } 
    public DataUrls Urls { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...