How do i get values from Json object in Xamarin Form

时光总嘲笑我的痴心妄想 提交于 2021-01-28 20:00:14

问题


Please i need help, i need to get values for UserID and UserID from the json Object below

{"data":{"UserID":"MS100000041","RoleID":5}}

This is my code:

public class UserDetails
{
    public string UserID { get; set; }
    public int RoleID { get; set; }
}

public  async Task Login(string url)
{
    try
    {
        var uri = new Uri(url);
        HttpClient myClient = new HttpClient();

        var response = await myClient.GetAsync(uri);
        if (response.IsSuccessStatusCode)
        {
            var content = await response.Content.ReadAsStringAsync();
            var Item = JsonConvert.DeserializeObject<UserDetails>(content);
            string userid = Item.UserID;

            int roleid= Item.RoleID;
        }
        else
        {
            Application.Current.Properties["response"] = response;
        }

    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex);
    }
}

But this value userid and roleid are showing null. Please how do i get these value


回答1:


According with the JSON provided, you must access to UserID and RoleID like Item.data.UserID and Item.data.RoleID




回答2:


as hellowstone pointed out

 [TestClass]
 public class Test2
 {
    [TestMethod]
    public void Test()
    {
        var item = JsonConvert
            .DeserializeObject<Payload>("{\"data\":{\"UserID\":\"MS100000041\",\"RoleID\":5}}")
            .data;
        Assert.AreEqual(item.RoleID, 5);
        Assert.AreEqual(item.UserID, "MS100000041");
    }
    class Payload
    {
        public UserDetails data { get; set; }
    }
    class UserDetails
    {
        public int RoleID { get; set; }
        public string UserID { get; set; }
    }
 }



回答3:


To expand on hellowstone's answer:

void Main()
{
    var content = @"{""data"":{""UserID"":""MS100000041"",""RoleID"":5}}";
    var Item = JsonConvert.DeserializeObject<UserDetails>(content);
    Console.WriteLine(Item.data.UserID);
    Console.WriteLine(Item.data.RoleID);
}

public class UserDetails
{
    public class Data
    {
        public string UserID { get; set; }
        public int RoleID { get; set; }
    }
    public Data data { get; set; }
}

Output is:

MS100000041
5



回答4:


 using Newtonsoft.Json;


            public  async Task Login(string url)
            {
            List<UserDetails> ud = new List<UserDetails> ();
                try
                {
                    var uri = new Uri(url);
                    HttpClient myClient = new HttpClient();

                    var response = await myClient.GetAsync(uri);
                    if (response.IsSuccessStatusCode)
                    {
                        var content = await response.Content.ReadAsStringAsync();
                        JObject results = JObject.Parse (content);

                        var  results2 = results ["data"];

                                foreach (var i in results2) {
                                 ud.Add (new UserDetails () {
                                  UserID = i["UserID"].ToString();
                                  RoleID = int.Parse(i["RoleID"].ToString());
                                 });
                                }
                    }
                    else
                    {
                        Application.Current.Properties["response"] = response;
                    }

                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex);
                }
            }


来源:https://stackoverflow.com/questions/39770222/how-do-i-get-values-from-json-object-in-xamarin-form

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!