在对数组 C# 的 Json 响应中反序列化对象



目前我正在使用Xamarin.Forms编写移动应用程序,我的问题是,我需要来自API的响应在单独的变量中,而不是一个字符串输出。

我的 API 输出:

{"error":false,"user":{"id":3,"email":"root@root.de","vorname":"root","nachname":"toor","wka":"wka1"}}

我正在使用 Newtonsoft 来反序列化响应,我认为问题出在"user":{...}后面的大括号,因为我可以打印出public bool error { get; set; }但其他变量不起作用。

class JsonContent
    {
        public bool error { get; set; }
        public int id { get; set; }
        public string email { get; set; }
        public string vorname { get; set; }
        public string nachname { get; set; }
        public string wka { get; set; }
    }

测试:

JsonContent j = JsonConvert.DeserializeObject<JsonContent>(response.Content);
bool pout = j.error;  //output: false
JsonContent j = JsonConvert.DeserializeObject<JsonContent>(response.Content);
int pout = j.id;  //output: 0

JSON 的 C# 类不正确。

它应该是

public class User
{
    public int id { get; set; }
    public string email { get; set; }
    public string vorname { get; set; }
    public string nachname { get; set; }
    public string wka { get; set; }
}
public class JsonContent
{
    public bool error { get; set; }
    public User user { get; set; }
}

然后,可以将 JSON 反序列化为 C# 对象

您可以使用一些 json 到 c# 转换器来获取模型,即 https://jsonutils.com 、 http://json2csharp.com。当您必须获得大型 json 的模型时,它会对您有所帮助。

public class User
{
   public int id { get; set; }
   public string email { get; set; }
   public string vorname { get; set; }
   public string nachname { get; set; }
   public string wka { get; set; }
}
public class Example
{
    public bool error { get; set; }
    public User user { get; set; }
}

相关内容

  • 没有找到相关文章

最新更新