C#将JSON序列化为类

时间:2018-07-17 06:51:58

标签: c# json httpclient

这是我的json:

"{\"sctoken\":\"a50395d5-571983f3-b394-4c6f-a26a-f95ae125fad6\",\"tms\":[{\"name\":\"ELTE MapCenterCache\",\"url\":\"http://cache2.smok.net.pl/cache_2015/element?s=%zoom%&x=%x%&y=%y%\"},{\"name\":\"OSM Mapnik\",\"url\":\"http://tile.openstreetmap.org/%zoom%/%x%/%y%.png\"},{\"name\":\"OSMElteMapa\",\"url\":\"http://osm.smok.net.pl/osm_tiles/%zoom%/%x%/%y%.png\"}],\"user_descr\":\"Pawel Okarmus\"}"

这是我如何将json转换为类:

LoginResult loginResult = JsonConvert.DeserializeObject<LoginResult>(result.ToString());


class LoginResult
{
    string sctoken { set; get; }
    List<Maps> tms { set; get; }
}

class Maps
{
    public string name { get; set; }
    public string url { get; set; }
}

我的对象LoginResult为空

3 个答案:

答案 0 :(得分:2)

尝试

LoginResult loginResult = JsonConvert.DeserializeObject<RootObject>(result.ToString());
    public class Tm
    {
        public string name { get; set; }
        public string url { get; set; }
    }

    public class RootObject
    {
        public string sctoken { get; set; }
        public List<Tm> tms { get; set; }
        public string user_descr { get; set; }
    }

答案 1 :(得分:1)

如果将属性和类都设置为public,它应该可以工作,以便解串器可以找到并访问它们:

public class LoginResult
{
    public string sctoken { set; get; }
    public List<Maps> tms { set; get; }
}

public class Maps
{
    public string name { get; set; }
    public string url { get; set; }
}

您还缺少元素user_descr,但这不是必需的(您仍然可以添加它,或者在不需要时将其省略)。

答案 2 :(得分:0)

您在Public类中缺少LoginResult,只需放置Public access修饰符,它将开始起作用(像这样):

  class LoginResult
    {
        public string sctoken { set; get; }
        public List<Maps> tms { set; get; }
    }