我应该如何创建json类来用c#解析它?

我应该如何创建json类来用c#解析它?,c#,json,json.net,C#,Json,Json.net,我使用了几个json到C#的转换器来生成类,这样我就可以用 var foo = JsonConvert.DeserializeObject<someGeneratedType>(jsonString); 根元素“query continue”不响应C#中的命名规则属性。大多数反序列化sdk都使用反射,在这种情况下是不可能的。 我测试了您的示例,没有在“querycontinue”属性上加上破折号,效果很好 public class Usercontribs {

我使用了几个json到C#的转换器来生成类,这样我就可以用

var foo = JsonConvert.DeserializeObject<someGeneratedType>(jsonString);
根元素“query continue”不响应C#中的命名规则属性。大多数反序列化sdk都使用反射,在这种情况下是不可能的。 我测试了您的示例,没有在“querycontinue”属性上加上破折号,效果很好

public class Usercontribs
    {
        public string ucstart { get; set; }
    }

    public class Querycontinue
    {
        public Usercontribs usercontribs { get; set; }
    }

    public class Usercontrib
    {
        public string userid { get; set; }
        public string user { get; set; }
        public int pageid { get; set; }
        public int revid { get; set; }
        public int parentid { get; set; }
        public int ns { get; set; }
        public string title { get; set; }
        public string timestamp { get; set; }
        public string comment { get; set; }
        public int size { get; set; }
    }

    public class Query
    {
        public List<Usercontrib> usercontribs { get; set; }
    }

    public class RootObject
    {
        public Querycontinue querycontinue { get; set; }
        public Query query { get; set; }
    }

您是否尝试过删除注释中的/字符?是否尝试过json2csharp.com?似乎产生了您期望的效果。尝试一些更简单的方法,看看是否有效。删除/不起作用。我使用了json2csharp,它为RoobObject部分生成了一个无效属性。它确实获取3个usercontrib,但不获取具有ucstart值的对象。我怀疑每个人都有一个“usercontribs”具有不同格式的对象是problem@user3151958我认为如果usercontrib是相同的对象,那么它们应该具有与您所说的相同的格式。v_response.querycontinue在您运行时为null。是否更改json字符串以删除破折号查询继续?json可以在属性名称中有一个
-
。要使它与Json.Net一起工作,您可以向类中的属性添加
[JsonProperty(“query continue”)]
public class Usercontribs
    {
        public string ucstart { get; set; }
    }

    public class Querycontinue
    {
        public Usercontribs usercontribs { get; set; }
    }

    public class Usercontrib
    {
        public string userid { get; set; }
        public string user { get; set; }
        public int pageid { get; set; }
        public int revid { get; set; }
        public int parentid { get; set; }
        public int ns { get; set; }
        public string title { get; set; }
        public string timestamp { get; set; }
        public string comment { get; set; }
        public int size { get; set; }
    }

    public class Query
    {
        public List<Usercontrib> usercontribs { get; set; }
    }

    public class RootObject
    {
        public Querycontinue querycontinue { get; set; }
        public Query query { get; set; }
    }
Stream fs = File.OpenRead(@"C:\Users\Dell\Downloads\sample.txt");

DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(RootObject));
RootObject v_response = (RootObject)jsonSerializer.ReadObject(fs);