我有这个简单的JSON,我正在反序列化这个JSON,所以我可以获得元素.这是我的JSON:
{
"QuestionIDs": [
"QID1",
"QID3"
],
"QuestionDefinitions": {
"Question1": {
"DETag": "Q1",
"Config": {
"QDescription": "UseText"
},
"COrder": [
"1",
"2",
"3"
],
"Validation": {
"Settings": {
"ForceResponse": "OFF",
"ForceResponseType": "ON",
"Type": "None"
}
}
}
},
"NextButton": null,
"PreviousButton": false
}
Run Code Online (Sandbox Code Playgroud)
这是我写的代码:
[DataContract]
public class RootObject
{
[DataMember]
public Dictionary<string, Dictionary<string, string>> QuestionDefinitions { get; set; }
[DataMember]
public List<string> QuestionIDs { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
QuestionIDs工作得很好.但是,QuestionDefinitions不起作用.它说它是一个空序列.我不确定是什么问题.
我希望能够访问QuestionDefinitions.
我试过了Json.Net.面对同样的问题.我能够得到简单的元素.但是,无法访问QuestionDefinitions.
任何帮助,将不胜感激.
编辑:
我也试过像这样实现这个类:
[DataContract]
public class QuestionDetails
{
[DataMember]
public string DETag { get; set; }
[DataMember]
[DataMember]
public List<Configuration> Config { get; set; }
[DataMember]
public List<string> ChoiceOrder { get; set; }
[DataMember]
public List<Validation> Validation { get; set; }
[DataMember]
public List<string> COrder { get; set; }
[DataMember]
public string NextButton { get; set; }
[DataMember]
public string PreviousButton { get; set; }
}
[DataContract]
public class RootObject
{
[DataMember]
public Dictionary<string, QuestionDetails> QuestionDefinitions { get; set; }
[DataMember]
public List<string> QuestionIDs { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
你的类结构反对JSON返回是不正确的.
在json2csharp.com中粘贴您的JSON时,生成以下POCO类:
public class Config
{
public string QDescription { get; set; }
}
public class Settings
{
public string ForceResponse { get; set; }
public string ForceResponseType { get; set; }
public string Type { get; set; }
}
public class Validation
{
public Settings Settings { get; set; }
}
public class Question1
{
public string DETag { get; set; }
public Config Config { get; set; }
public List<string> COrder { get; set; }
public Validation Validation { get; set; }
}
public class QuestionDefinitions
{
public Question1 Question1 { get; set; }
}
public class RootObject
{
public List<string> QuestionIDs { get; set; }
public QuestionDefinitions QuestionDefinitions { get; set; }
public object NextButton { get; set; }
public bool PreviousButton { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在使用上述类作为您的JSON结构的代表,你应该能够在反序列化它的C#对象.
以下代码行将使用NewtonSoft库执行此操作:
string json = "your json result";
RootObject result = JsonConvert.DeserializeObject<RootObject>(json);
Run Code Online (Sandbox Code Playgroud)
如果您有2013年或更高版本,您可以在Visual Studio中执行此操作,如本文所述:
希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |