C# 如何定义JSON.DeserializeObject的模型

C# 如何定义JSON.DeserializeObject的模型,c#,json,serialization,C#,Json,Serialization,当我看到JSON可视化工具时,我有点困惑,我必须如何准确地定义JSON反序列化的模型; 例如: 正文: {“问题”:[{“QID”:“新的”,“背景”:“新的” ž (五)六(五)六(五)六(六)六 我有一个Javascript类数组(由Question组成的Questions),现在我将它发送到控制器端,不知道如何对其进行反序列化。我已经测试过这些东西,但都不起作用 错误的:(Jsonstring是action参数中的JSON对象) JSON字符串中的顶级属性是“questions”,这是一

当我看到JSON可视化工具时,我有点困惑,我必须如何准确地定义JSON反序列化的模型; 例如:

正文:

{“问题”:[{“QID”:“新的”,“背景”:“新的” ž (五)六(五)六(五)六(六)六

我有一个Javascript类数组(由Question组成的Questions),现在我将它发送到控制器端,不知道如何对其进行反序列化。我已经测试过这些东西,但都不起作用

错误的:(Jsonstring是action参数中的JSON对象)


JSON字符串中的顶级属性是“questions”,这是一个对象数组,因此需要一个顶级类来保存该属性。乙二醇

    public class Root
    {
        public Question[] Questions { get; set; }
    }

    public class Question
    {
        public string QID { get; set; }
        public string Context { get; set; }
    }
var root=JsonConvert.DeserializeObject(jsonString);

只需使用一种工具,例如,经常使用tnx。它运行着我的工作,但我想知道json反序列化的背后到底发生了什么。你知道研究这个主题的任何参考资料吗?发生的是JSON是一种结构化格式,带有两个标记(
{
}
[
]
).Json.Net库获取字符串/流/字节数组并解析令牌,大致如下:'哦,我们遇到
{
->表示我们正在启动一个对象,哦,我们遇到
[
->表示我们正在启动一个数组,哦,我们遇到
'
->意味着它是一个类似字符串的数据。然后它接受您的POCO类型,并尝试根据一些约定匹配键并赋值。您的json对象是一个
Ques
数组,因此
jsonvert.desirealizeObject(jsonString);
应该可以工作!我刚刚测试了该站点,但它不工作。问题列表为空。
public class Ques
{
  public string QID { get; set; }
  public string Context{ get; set; }
}
    public class Root
    {
        public Question[] Questions { get; set; }
    }

    public class Question
    {
        public string QID { get; set; }
        public string Context { get; set; }
    }
var root = JsonConvert.DeserializeObject<Root>(jsonString);