我有这个JSON:
{
"Date": "3/6/17",
"Place": "MyPlace",
"Questions": [{
"Category": "",
"Question": "???",
"Answer": ""
}, {
"Category": "",
"Question": "??? ",
"Answer": ""
}, {
"Category": "",
"Question": "???",
"Answer": ""
}]
}
我想解析这个JSON并将其中的数组作为列表获取
使用var list = JsonConvert.DeserializeObject<List<JToken>>(jsonString);
不起作用,因为整个事物不是一个数组,只有在它内部有一个数组
那我该怎么做C#?
答案 0 :(得分:3)
您可以定义以下类:
public class Question
{
[JsonProperty("Category")]
public string Category { get; set; }
[JsonProperty("Question")]
public string Question { get; set; }
[JsonProperty("Answer")]
public string Answer { get; set; }
}
public class QuestionsDatePlace
{
[JsonProperty("Date")]
public string Date { get; set; }
[JsonProperty("Place")]
public string Place { get; set; }
[JsonProperty("Questions")]
public IList<Question> Questions { get; set; }
}
然后将你的json解析为如下:
var list = JsonConvert.DeserializeObject<QuestionsDatePlace>(jsonString);
答案 1 :(得分:0)
最简单的方法,无需创建额外的课程:
dynamic json = new JavaScriptSerializer().Deserialize<dynamic>(jsonString);
var list = json["Questions"];
如果您需要将结果转换为JToken对象序列,请执行此操作。
dynamic json = new JavaScriptSerializer().Deserialize<dynamic>(jsonString);
var list = ((IEnumerable<dynamic>)json["Questions"]).Select(q => new JToken()
{
Category = q["Category"],
Question = q["Question"],
Answer = q["Answer"]
});
为了记录,这需要在References
的{{1}}节点中添加程序集 System.Web.Extensions 。