我遇到的问题是如何反序列化以下JSON。Answer的值有时为NULL、true、整数、布尔值或包含另一个JSON列表(id、description等)。
我首先尝试在Visual Studio中将其复制并特殊粘贴为类。这提供了以下Questions类。
然后我尝试反序列化它(使用C#,其中rawResponse是JSON)。但是,我收到了“Newtonsoft.Json.JsonSerializationException:'无法将当前JSON数组(例如[1,2,3])反序列化为类型Applicated.Questions,因为该类型需要一个JSON对象(例如{"name":“value”})才能正确反序列化....” 的错误信息。
我理解这与映射不正确有关。
因此,我尝试将所有内容放入foreach循环中,通过将响应保存在动态变量中(请注意,我删除了Questions类中的Property1以进行此操作)。但是,答案中的一些结果在Answer字段中存储字符串Id、Description等。是否有更简单的方法来做到这一点?我似乎已经到达了心理障碍?
JSON:
我首先尝试在Visual Studio中将其复制并特殊粘贴为类。这提供了以下Questions类。
然后我尝试反序列化它(使用C#,其中rawResponse是JSON)。但是,我收到了“Newtonsoft.Json.JsonSerializationException:'无法将当前JSON数组(例如[1,2,3])反序列化为类型Applicated.Questions,因为该类型需要一个JSON对象(例如{"name":“value”})才能正确反序列化....” 的错误信息。
我理解这与映射不正确有关。
因此,我尝试将所有内容放入foreach循环中,通过将响应保存在动态变量中(请注意,我删除了Questions类中的Property1以进行此操作)。但是,答案中的一些结果在Answer字段中存储字符串Id、Description等。是否有更简单的方法来做到这一点?我似乎已经到达了心理障碍?
JSON:
[
{
"Answer": true,
"QuestionId": 55,
"Title": "Are you Married?",
"AnswerType": "Boolean"
},
{
"Answer": {
"Id": "1",
"Description": "Female",
"Reference": "F",
"ArchiveDate": null,
"ParentId": null,
"OptionType": {
"Id": 40,
"Type": "dropdown"
}
},
"QuestionId": 778,
"Title": "Gender",
"AnswerType": "Option”
}
]
类别:
public class Questions
{
public Class1[] Property1 { get; set; }
}
public class Class1
{
public object Answer { get; set; }
public int QuestionId { get; set; }
public string Title { get; set; }
public string AnswerType { get; set; }
}
C#:
Questions result = JsonConvert.DeserializeObject<Questions>(rawResponse);
C# 动态的 foreach
dynamic result = JsonConvert.DeserializeObject(rawResponse);
var lstQuestionObjects = new List<Questions>();
foreach(var obj in result)
{
lstQuestionObjects.Add(new Questions()
{
Answer = (obj.Answer !=null) ? obj.Answer.ToString() :"",
QuestionId = int.Parse(obj.QuestionId.ToString()),
Title = (obj.Title != null) ? obj.Title.ToString() : "",
AnswerType = (obj.AnswerType != null) ? obj.AnswerType.ToString() : ""
});
}