Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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
RestSharp(C#)-将JSON对象反序列化为NULL_C#_Json_Serialization_Restsharp - Fatal编程技术网

RestSharp(C#)-将JSON对象反序列化为NULL

RestSharp(C#)-将JSON对象反序列化为NULL,c#,json,serialization,restsharp,C#,Json,Serialization,Restsharp,我试图通过在应用程序中使用RestSharp来理解REST 下面是我的客户端返回的一点JSON: { "result" : { "object_type" : "session", "user_id" : "FEE3CBD4-5D35-11E3-A42A-606A40E381E5", "object_name" : "Session", "id" : "2F2968B6-5D37-11E3-89F4-5D6A40E381E5" } }

我试图通过在应用程序中使用RestSharp来理解REST

下面是我的客户端返回的一点JSON:

{
   "result" : {
      "object_type" : "session",
      "user_id" : "FEE3CBD4-5D35-11E3-A42A-606A40E381E5",
      "object_name" : "Session",
      "id" : "2F2968B6-5D37-11E3-89F4-5D6A40E381E5"
   }
}
这是我的类对象:

public class TGCResult : IDeserializer
{
    public string object_type {get; set;}
    public string user_id { get; set; }
    public string object_name { get; set; }
    public string id { get; set; }

    public TGCResult()
    {
    }

    public override string ToString()
    {
        return "object_type = " + object_type + "\nuser_id = " + user_id + "\nobject_name = " + object_name + "\nid = " + id;
    }
}
下面是我检索JSON并尝试反序列化的代码:

var client = new RestClient("https://www.xxxxxxxxx.com");

var request = new RestRequest("/api/session", Method.POST);
request.AddParameter("username", "JSventoraGD");
request.AddParameter("password", "xxxxxxxxxxxxxxxx");
request.AddParameter("api_key_id", "xxxxxxxxxxxxxxxxxxx");
request.RequestFormat = DataFormat.Json;

var asyncHandle = client.ExecuteAsync<TGCResult>(request, response =>
{
    TxtTest.Text = response.Data.ToString();
});

asyncHandle.Abort();
var client=new RestClient(“https://www.xxxxxxxxx.com");
var-request=new-RestRequest(“/api/session”,Method.POST);
AddParameter(“用户名”,“JSventoraGD”);
request.AddParameter(“密码”,“XXXXXXXXXXXXXX”);
请求.AddParameter(“api密钥id”,“XXXXXXXXXXXXXXXXXXXX”);
request.RequestFormat=DataFormat.Json;
var asynchHandle=client.ExecuteAsync(请求、响应=>
{
TxtTest.Text=response.Data.ToString();
});
asynchHandle.Abort();
执行此操作时,可以看到数据已正确返回到应用程序,但响应中的数据始终具有空值。你知道为什么会这样吗?我应该手动反序列化给定内容的JSON吗?我在网上看到的样品和我的非常相似,我迷路了。。。非常感谢您的帮助

试着像这样使用它

var asyncHandle = client.ExecuteAsync(request, response =>
{
    var json = response.Content;
    // deserialize to TGCResult
});
这对我来说很好

尝试添加

request.RootElement = "result";
我刚刚花了几个小时试图得到一个简单的get请求来解析除null以外的任何内容,设置RootElement对我很有帮助。有点惊讶我需要它,因为您在代码中的其他几个位置设置了类型类。

var asynchHandle=client.ExecuteAsync(请求,响应=>{
var asyncHandle=client.ExecuteAsync(request,response=>{    
   String res=response.Content;
   T obj = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(res); 
});
String res=response.Content; T obj=Newtonsoft.Json.JsonConvert.DeserializeObject(res); });
似乎需要另一个类作为数据类型

public class TGCResultContainer
{
    public TGCResult result { get; set; }
}

此外,TGCResult类不需要实现IDeserializer。

请详细说明您的答案