C# 如何使用Asp.NETWebAPI将对象设置为JSON字符串中的值?

C# 如何使用Asp.NETWebAPI将对象设置为JSON字符串中的值?,c#,asp.net,json,web-services,asp.net-web-api,C#,Asp.net,Json,Web Services,Asp.net Web Api,我正在构建一个Jeopardy Web Api应用程序来帮助准备.Net技术面试 我正在使用代码优先实体框架创建数据库 我正在使用Fiddler测试POST/GET 我有两张表:类别和危险问题 一个问题可以有一个类别,一个类别可以有许多问题。 模型设置如下所示 public class JeopardyQuestion { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int JeopardyQuest

我正在构建一个Jeopardy Web Api应用程序来帮助准备.Net技术面试

我正在使用代码优先实体框架创建数据库

我正在使用Fiddler测试POST/GET

我有两张表:类别和危险问题

一个问题可以有一个类别,一个类别可以有许多问题。 模型设置如下所示

public class JeopardyQuestion
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int  JeopardyQuestionId { get; set; }

    [Required]
    public string Question { get; set; }

    [Required]
    public string Answer { get; set; }

    [Required]
    public int Value { get; set; }

    [Required]
    public virtual Category Category { get; set; }

}

public class Category
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int CategoryId { get; set; }

    [Required]
    public string CategoryName { get; set; }


    public virtual List<JeopardyQuestion> JeopardyQuestions { get; set; }

}
错误

我的问题是,当值需要是对象时,如何在JSON中正确设置键/值对?在这种情况下,类别对象

更具体地说,我该怎么做

 "Category" : "ASP.NET"

ASP.NET在我的数据库类别表的CategoryName列中的什么位置?

向问题实体添加CategoryID字段并发送该字段。让实际类别为空。此外,您可以考虑创建DTO对象,专门用于向服务发送数据,并在控制器中有规则的C代码,将数据复制到实体中。当要公开的数据的形状与数据库中数据的形状不同时,或者当数据中存在不应公开的部分时,这会有所帮助

 {"Message":"The request is invalid.","ModelState":{"jeopardyQuestion.Category":["Error converting value \"ASP.NET\" to type 'Jeopardy.Models.Category'. Path 'Category', line 1, position 152.","The Category field is required."]}}
 "Category" : "ASP.NET"