C#将json序列化到类

C#将json序列化到类,c#,json,httpclient,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

这是我的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\"}"
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; }
}
以下是我如何将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 LoginResult=JsonConvert.DeserializeObject(result.ToString());
类登录结果
{
字符串sctoken{set;get;}
列表tms{set;get;}
}
类图
{
公共字符串名称{get;set;}
公共字符串url{get;set;}
}
而我的对象登录结果为空

请尝试以下操作

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 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; }
    }
LoginResult LoginResult=JsonConvert.DeserializeObject(result.ToString());
公共类商标
{
公共字符串名称{get;set;}
公共字符串url{get;set;}
}
公共类根对象
{
公共字符串sctoken{get;set;}
公共列表tms{get;set;}
公共字符串用户_descr{get;set;}
}

如果将属性和类都设置为公共的,那么反序列化程序应该可以找到并访问它们:

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; }
}
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; }
}
公共类登录结果
{
公共字符串sctoken{set;get;}
公共列表tms{set;get;}
}
公共类映射
{
公共字符串名称{get;set;}
公共字符串url{get;set;}
}

您还缺少元素
user\u descr
,但这不是必需的(您仍然可以添加它,如果不需要它,也可以省略它)。

您的
LoginResult
类中缺少
Public
,只需放入Public access修饰符,它就会开始工作(如下所示):

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; }
}
类登录结果
{
公共字符串sctoken{set;get;}
公共列表tms{set;get;}
}

JsonConvert.DeserializeObject()
不会生成
LoginResult
。另外,一个好的答案解释了您更改的内容和原因。关键是
public
修饰符对
Tm
的类和属性(它是从
Maps
重命名的,我想是因为您生成了它)。是的,您是对的。首先,我将JSON字符串转换为JSON对象,然后将该JSON对象字符串化,并从该字符串生成类@彼得你能告诉我为什么我不能这样做吗:loginResult=Test1(LogIncs)?你能告诉我为什么我不能这样做吗:loginResult=Test1(LogIncs)?你能告诉我为什么我不能这样做吗:loginResult=Test1(LogIncs)?你能解释一下你想做什么吗?当我完成这个任务时,上帝,我有一个参数,我想做另一个功能,我用这个函数