我需要使用WebAPI爲Trivia應用程序創建嵌套的JSON。我的數據庫結構是用WebAPI C#創建嵌套的JSON?
TriviaQuiz - 測驗可以有很多問題。 TriviaQuestion - 一個問題可以有很多的選擇(選擇) TriviaOption - 答案列表(選擇)
我需要產生JSON以下格式
{
"quiz" : [{
"id" : 1,
"name" :"Guess Fruit Color",
"description": "You need to guess color of fruits",
"questions" : [
{"id" : 1000 , "quizId" : 1 , "description": "The color of apple is" , "options" : [
{"id" : 1 , "questionId" : 1000 , "description" : "Green", "correctAnswer" : false },
{"id" : 2 , "questionId" : 1000 , "description" : "Red", "correctAnswer" : true },
{"id" : 3 , "questionId" : 1000 , "description" : "Pink", "correctAnswer" : false },
{"id" : 4 , "questionId" : 1000 , "description" : "Purple", "correctAnswer": false }
]
},
{"id" : 1001 , "quizId" : 1 , "description": "The color of mangoss is" , "options" : [
{"id" : 5 , "questionId" : 1001 , "description" : "Green", "correctAnswer" : false },
{"id" : 6 , "questionId" : 1001 , "description" : "Red", "correctAnswer" : false },
{"id" : 6 , "questionId" : 1001 , "description" : "Yello", "correctAnswer" : true },
{"id" : 8 , "questionId" : 1001 , "description" : "Purple", "correctAnswer": false }
]
}
]}
]
}
我設計我的課像
public class TriviaQuiz
{
public int id { get; set; }
public string name { get; set; }
public string description { get; set; }
//A Quiz can have many questions
public virtual List<TriviaQuestion> questions { get; set; }
}
public class TriviaQuestion
{
[Key(), ForeignKey("triviaQuiz")]
public int id { get; set; }
public string description { get; set; }
//Navigation Property to set foreign key relationship
[JsonIgnore]
public virtual TriviaQuiz triviaQuiz { get; set; }
//A question can have many options
public virtual List<TriviaOption> options { get; set; }
}
public class TriviaOption
{
public int id { get; set; }
[ForeignKey("triviaQuestion")]
//Tell EF That questionId is a Foreign key to TriviaQuestion table
public int questionId { get; set; }
public string description { get; set; }
public Boolean correctAnswer { get; set; }
//Navigation Property to set up Foreign key relation ship
[JsonIgnore]
public virtual TriviaQuestion triviaQuestion { get; set; }
}
我的WebAPI貌似這個
public List<TriviaQuiz> getTopJson()
{
return _db.TriviaQuizs.ToList();
}
有些人可以建議什麼是生成JSON的最佳方法。我應該爲此創建一個ViewModel嗎?
當我運行此我得到一個錯誤:模型生成過程中檢測到 一個或多個驗證錯誤:
TriviaQuestion_triviaQuiz_Source:多重不是在關係中的作用「TriviaQuestion_triviaQuiz_Source「TriviaQuestion_triviaQuiz」有效。因爲依賴角色是指關鍵屬性,所以依賴角色的多重性的上界必須是'enter code here
1'。
我已經花了一個星期的研究,但無法找到任何與互聯網相關的東西,有人可以幫助。
你打我吧:) –
我也建議使用,而不是駝峯規則,因爲這是一個標準的.NET命名約定Pascal大小寫定義您的模型。然後將Json序列化程序設置爲使用CamelCasePropertyNamesContractResolver編寫camelCase – Fran
我在Web.config中添加了這些條目以僅返回JSON,但仍然收到相同的錯誤。我也刪除了Virtual關鍵字來禁用延遲加載,但沒有幫助。所以當你說創建DTO意味着創建一個ViewModel時,我感到困惑? –