繁体   English   中英

在C#Xamarin.Forms中读取JSON响应

[英]read JSON Response in C# Xamarin.Forms

我正在从xamarin.forms android应用中的Web服务读取响应,以下是包含状态(0错误,1-OK)消息和信息的响应(信息包含来自datatable的数据行)

{
"status": 1,
"msg" : "OK",
"info": {
"UCode": "1",
"UName": "Admin",
"UPass": "pass"
}
}

我能够读取statusmsg

如何将数据从节点信息转换为User_Info类的Observable集合?

这是我的代码

            try
            {
                using (var client = new HttpClient())
                {
                    var url = GSVar.hostname + GSVar.user_check;
                    var content = new FormUrlEncodedContent(new[]
                    {
                        new KeyValuePair<string,string>("uname",T1.Text),
                        new KeyValuePair<string, string>("upass",T2.Text)
                    });

                    var resp = await client.PostAsync(new Uri(url), content);
                    //var resp = await client.GetAsync(new Uri(url));
                    if (resp.IsSuccessStatusCode)
                    {
                        var result = JsonConvert.DeserializeObject<Json_Respnce>(resp.Content.ReadAsStringAsync().Result);
                        if (result.status == 0)
                            General.GSErr(result.msg);
                        else
                        {
                            //User_Info user_info = JsonConvert.DeserializeObject<User_Info>(result.UserInfo);
                            //await DisplayAlert("OK", result.UserInfo.ToString(), "OK");
                        }
                    }
                    else
                        General.GSErr("Nothing retrieved from server.");
                }
            }
            catch { throw; }

清单类别

class Json_Respnce
{
    [JsonProperty(PropertyName ="status")]
    public int status { get; set; }

    [JsonProperty(PropertyName = "msg")]
    public string msg { get; set; }

    //[JsonProperty(PropertyName = "info")]
    //public string UserInfo { get; set; }
}

class User_Info
{
    [JsonProperty(PropertyName = "UCode")]
    public string UCode { get; set; }

    [JsonProperty(PropertyName = "UName")]
    public string UName { get; set; }

    [JsonProperty(PropertyName = "UPass")]
    public string UPass { get; set; }
}

创建所需的模型类。 您可以使用json2csharp 只需将您的JSON字符串粘贴到此处,然后单击生成

public class Info
{
    public string UCode { get; set; }
    public string UName { get; set; }
    public string UPass { get; set; }
}

public class Response
{
    public int status { get; set; }
    public string msg { get; set; }
    public Info info { get; set; }
}

然后,您可以将JSON字符串反序列化为:

string jsonString = await resp.Content.ReadAsStringAsync ();
Response response = JsonConvert.DeserializeObject<Response> (jsonString));

if (response.status == 1) {
    Info info = response.info
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM