Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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# 将对象反序列化到类中不起作用_C#_Json_Xamarin.forms - Fatal编程技术网

C# 将对象反序列化到类中不起作用

C# 将对象反序列化到类中不起作用,c#,json,xamarin.forms,C#,Json,Xamarin.forms,我试图使用从api返回的json对象中的反序列化对象为令牌设置一个类。但是,当我运行下面的代码时,它会将所有值设置为null或0,而不是我从api得到的结果 cs代码 var resultString = await result.Content.ReadAsStringAsync(); var post = JsonConvert.DeserializeObject<Token>(resultString); JSON响应 "{\"code\":201,\"status\":\"

我试图使用从api返回的json对象中的反序列化对象为令牌设置一个类。但是,当我运行下面的代码时,它会将所有值设置为null或0,而不是我从api得到的结果

cs代码

var resultString = await result.Content.ReadAsStringAsync();
var post = JsonConvert.DeserializeObject<Token>(resultString);
JSON响应

"{\"code\":201,\"status\":\"Success\",\"message\":\"Object found\",\"data\":{\"StaffID\":14,\"StaffSurname\":\"Test\",\"StaffForename\":\"Test\",\"StaffEmail\":\"test@test.com\",\"PrimaryStaffRoleID\":5,\"TokenApi\":\"testToken\"}}"

如果分析发布的JSON,则尝试反序列化的对象位于JSON的“data”属性内


我建议您创建一个类,用
Data
属性表示JsonResponse。这将是您的
标记

如果您分析发布的JSON,那么您尝试反序列化的对象位于JSON的“data”属性内


我建议您创建一个类,用
Data
属性表示JsonResponse。这将是您的
标记

检索到与此对象匹配的字符串

public string code {get;set;}
public string Success {get;set;} ...
令牌与json中的数据匹配,所以

var post = JsonConvert.DeserializeObject<Token>(resultString.data);
var post=JsonConvert.DeserializeObject(resultString.data);

会更好。

检索到与此对象匹配的字符串

public string code {get;set;}
public string Success {get;set;} ...
令牌与json中的数据匹配,所以

var post = JsonConvert.DeserializeObject<Token>(resultString.data);
var post=JsonConvert.DeserializeObject(resultString.data);

更好。

首先,您尝试映射的数据位于json中另一个名为
data
的属性中,其次,您的json没有名为
标记的属性

实际上,问题是您没有使用反映json的正确类型,这意味着您没有正确的c#type映射到json,您可以使用生成正确的类型,正确的类为:

public class Data
{
    public int StaffID { get; set; }
    public string StaffSurname { get; set; }
    public string StaffForename { get; set; }
    public string StaffEmail { get; set; }
    public int PrimaryStaffRoleID { get; set; }
    public string TokenApi { get; set; }
}

public class RootObject
{
    public int code { get; set; }
    public string status { get; set; }
    public string message { get; set; }
    public Data data { get; set; }
}
现在,使用
RootObject
作为类型参数进行反序列化将非常有效,如下所示:

var resultString = await result.Content.ReadAsStringAsync();
var post = JsonConvert.DeserializeObject<RootObject>(resultString);
var resultString=await result.Content.ReadAsStringAsync();
var post=JsonConvert.DeserializeObject(resultString);

一个更好的选择是使用它,它甚至可以为您生成c#或他们支持的任何其他语言的代码。

首先,您试图映射的数据位于json中另一个名为
data
的属性中,其次,您的json没有名为
标记的属性

实际上,问题是您没有使用反映json的正确类型,这意味着您没有正确的c#type映射到json,您可以使用生成正确的类型,正确的类为:

public class Data
{
    public int StaffID { get; set; }
    public string StaffSurname { get; set; }
    public string StaffForename { get; set; }
    public string StaffEmail { get; set; }
    public int PrimaryStaffRoleID { get; set; }
    public string TokenApi { get; set; }
}

public class RootObject
{
    public int code { get; set; }
    public string status { get; set; }
    public string message { get; set; }
    public Data data { get; set; }
}
现在,使用
RootObject
作为类型参数进行反序列化将非常有效,如下所示:

var resultString = await result.Content.ReadAsStringAsync();
var post = JsonConvert.DeserializeObject<RootObject>(resultString);
var resultString=await result.Content.ReadAsStringAsync();
var post=JsonConvert.DeserializeObject(resultString);

一个更好的选择是使用它,它甚至可以用c#或他们支持的任何其他语言为您生成代码。

您的意思是什么不起作用?它一直将每个值设置为null或0,即使我的json响应中有数据。您的意思是什么不起作用?它一直将每个值设置为null或0,即使我在json响应中有数据。