简体   繁体   English

C#将json序列化为类

[英]C# serialize json to class

This is my json : 这是我的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\"}"

this how I convert json to class : 这是我如何将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; }
}

and my object LoginResult is empty 我的对象LoginResult是空的

Try This 尝试这个

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; }
    }

It should work if you make the properties and the classes all public , so the deserializer can find & access them: 如果你将属性和类都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; }
}

You are also missing the element user_descr but that is not essential (you can still add it, or omit it if you don't need it). 您还缺少元素user_descr但这不是必需的(您仍然可以添加它,或者如果您不需要它,则省略它)。

You are missing Public in your LoginResult class , just put Public access modifier and it would start working (like this): 您在LoginResult类中缺少Public ,只需放置Public访问修饰符,它就会开始工作(如下所示):

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

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

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