C# 控制器接受类作为JSON参数

C# 控制器接受类作为JSON参数,c#,asp.net,json,class,C#,Asp.net,Json,Class,这是当前代码的简化版本。 我发布的json: [HttpPost] public bool Add([FromBody]Person Object) { if (!Object.IsValid()) return false; Repository.Add(Object); return true; } public class Person : Model { public Age Age; pu

这是当前代码的简化版本。 我发布的json:

    [HttpPost]
    public bool Add([FromBody]Person Object)
    {
        if (!Object.IsValid()) return false;
        Repository.Add(Object);
        return true;
    }

public class Person : Model
{
    public Age Age;
    public string Name;

    public override bool IsValid()
    {
        if (Age == null) return false;

        return true;
    }
}

public class Age
{
    public DateTime Creation { get; set; }

    public Age() {}
    public Age(DateTime Creation)
    {
        this.Creation = Creation;
    }

    public int Compute()
    {
        return DateTime.Now.Year - Creation.Year; // Leap Year?
    }
}

如何通过接受自定义类。json?如果我取代公众年龄;具有公共日期时间年龄;然后,这段代码就可以工作了,并且正确地解析了日期get。如果我不知道,则会发生运行时异常,因为“Object”为null(可能是由于内部反序列化错误)

您发布的json需要与您希望它绑定到的模型结构相匹配(如果您只想内置模型绑定来完成它的工作)

i、 e。 尝试发布:

{
    "Age": "2016-01-01T00:00:00.0000000-00:00",
    "Name": "Humberg"
}

哦,我已经试过了,但是我没有使用正确的日期格式。非常感谢。不幸的是,有一个计时器接受你的答案,但这是它。你也应该考虑在<代码>人>代码>类的定义中初始化<代码>年龄>代码>属性。
{
    "Name" : "Humberg",
    "Age" : {
        "Creation" : "2016-01-01T00:00:00.0000000-00:00"
    }
}