簡體   English   中英

Xamarin Rest Web服務不會反序列化

[英]Xamarin rest web service doesn't deserialize

我想在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; }
    }
}

傑森:

{  
   "result":{  
      "retail":{  
         "@xsi.type":"registeredDevice",
         "clientuuid":"28asgargb-acfe‌​-41dfgsdg51",
         "deviceuuid":123456
      },
      "success":true
   }
}

我認為問題來自:

private object retval = null;

因此,對我而言,在C#中構造序列化對象的最佳方法是使用以下網站:

http://json2csharp.com/

這將告訴您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; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM