我想用get方法使用rest。我的代码如下;
public class RegisterPage : ContentPage
{
Label label, l4, label2;
public RegisterPage()
{
Button btn = new Button
{
Text = "register"
};
btn.Clicked += Btn_Clicked;
label = new Label();
l4 = new Label();
label2 = new Label();
Content = new StackLayout
{
Children = {
btn,
label,
l4,
label2
}
};
}
private async void Btn_Clicked(object sender, EventArgs e)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add(Constants.API_KEY_HEADER_KEY, Constants.API_KEY);
string URL = Constants.URL;
var response = await client.GetAsync(URL);
var content = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<Models.Result>(content);
label.Text = result.Success.ToString();
l4.Text = result.Error.ToString();
label2.Text = ((RegisteredDevice)result.Retval).Clientuuid + " - " + ((RegisteredDevice)result.Retval).Deviceuuid;
}
}
网址运行良好。我的内容值有json字符串。但序列化不起作用。
var result = JsonConvert.DeserializeObject(content); 这段代码没有消毒。
我的模特是;
public class Result
{
private object retval = null;
private bool success = false;
private Error error = null;
internal Error Error
{
get { return error; }
set { error = value; }
}
public bool Success
{
get { return success; }
set { success = value; }
}
public object Retval
{
get { return retval; }
set { retval = value; }
}
}
JSON:
{
"result":{
"retail":{
"@xsi.type":"registeredDevice",
"clientuuid":"28asgargb-acfe-41dfgsdg51",
"deviceuuid":123456
},
"success":true
}
}
答案 0 :(得分:1)
我认为问题来自:
private object retval = null;
所以对我来说,在C#中构建序列化对象的最好方法是使用这个网站:
这将告诉你你的json是否正确,他会为你生成你需要的类,这里是由json2csharp生成的类
public class Retail
{
public string __invalid_name__@xsi.type { get; set; }
public string clientuuid { get; set; }
public int deviceuuid { get; set; }
}
public class Result
{
public Retail retail { get; set; }
public bool success { get; set; }
}
public class RootObject
{
public Result result { get; set; }
}