目前我正在使用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; }
}