我应该如何创建json类来用c#解析它?
我使用了几个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 {
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);