Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#将json解析为对象_C# - Fatal编程技术网

c#将json解析为对象

c#将json解析为对象,c#,C#,我需要一些帮助来将json rest从IsThereASale API解析为c#对象,但由于json布局,我被卡住了: 这里我需要的是来自数据数组的信息 下面是我获取json响应的方式: var client = new RestClient("https://api.isthereanydeal.com/"); client.UseNewtonsoftJson(); var request = new RestRequest("https://api.isthereanydeal.c

我需要一些帮助来将json rest从IsThereASale API解析为c#对象,但由于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);
var client=new RestClient(“https://api.isthereanydeal.com/");
client.UseNewtonsoftJson();
var请求=新的重新请求(“https://api.isthereanydeal.com/v01/deals/list/?key=“+Config.apiKey+”&sort=time”);
var json=JsonConvert.DeserializeObject(response.Content);
正如您在上面所注意到的,我试图将其转换为字典,但没有成功。

您可以使用它

公共部分类数据
{
公共长计数{get;set;}
//或公共动态列表{get;set;}
公共列表{get;set;}
公共数据URL{get;set;}
}
您可以使用

公共部分类数据
{
公共长计数{get;set;}
//或公共动态列表{get;set;}
公共列表{get;set;}
公共数据URL{get;set;}
}


请再添加一个API返回的json示例好吗?@Martin Staufcik查看我发布的链接。我的意思是,它不是字典,它是一个复杂的对象类型。我看不到你的请求在起作用。。。但是,
反序列化对象
应该接受一个类或一个接口,该类或接口与您从该api获得的响应类似,而不是一个
字典
您可以添加一个api返回的json示例吗?@Martin Staufcik检查我发布的链接。我的意思是,它不是字典,它是一个复杂的对象类型。我看不到你的请求在起作用。。。但是,
反序列化对象
应该接受一个类或接口,该类或接口与您从该api获得的响应类似,而不是一个
字典
谢谢。但我注意到,返回的json并不总是具有相同的值:ArgumentException:必须在字符串中指定用于解析的有效信息。好的,这是您首先需要在帖子中指出的:)如果您知道json的哪些部分发生了更改,可以用dynamic替换该类型。检查我的编辑好的,谢谢。代表商店的数组发生了什么变化:public enum Id{Dlgamer};公共枚举名{DlGamer};以下是新的值。您可以注意到我对json的更改。它们是根据Salei上的尊重游戏商店而改变的谢谢,我最后想出来了:)谢谢。但我注意到,返回的json并不总是具有相同的值:ArgumentException:必须在字符串中指定用于解析的有效信息。好的,这是您首先需要在帖子中指出的:)如果您知道json的哪些部分发生了更改,可以用dynamic替换该类型。检查我的编辑好的,谢谢。代表商店的数组发生了什么变化:public enum Id{Dlgamer};公共枚举名{DlGamer};以下是新的值。您可以注意到我对json的更改。它们是根据Salei上可用于“尊重”游戏的商店进行更改的谢谢,我最后发现了:)
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);
var json = JsonConvert.DeserializeObject<dynamic>(response.Content);
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; }
}