gpt4 book ai didi

c# - 如何使用 Asp.Net Web API 将对象设置为 JSON 字符串中的值?

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:30 24 4
gpt4 key购买 nike

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

我正在使用代码优先 Entity Framework 来创建我的数据库。

我正在使用 Fiddler 测试 POSTS/GET

我有 2 个表:Categories 和 JeopardyQuestion。

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

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; }

}

我能够成功发布 2 个类别:Ado.net 和 Asp.net。这 2 个类别的问题列表为空。

当我尝试发布一个新问题并尝试对其应用现有类别时,我的错误出现了:

 {"Question" : "This framework allows developers to easily create web applications","Answer" : "What is Asp.Net", "Value" : "200", "Category" : "ASP.NET"}

错误

 {"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."]}}

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

更具体地说,我该怎么做

 "Category" : "ASP.NET"

我的数据库中 Category 表的 CategoryName 列中的 ASP.NET 在哪里?

最佳答案

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

关于c# - 如何使用 Asp.Net Web API 将对象设置为 JSON 字符串中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32040073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com