2012-04-06 133 views
4

我對MVC4(測試版)問題有疑問,我一直在努力一段時間。問題是我想創建一個json,併爲我的webapi添加了對象名稱。 json必須被創建,這是因爲接收方需要這個。我的.NET/MVC知識有限,請耐心等待。我試圖搜索這個主題,但由於MVC4仍處於測試階段,因此很難在此主題上找到有用的信息。MVC4:在Json中包含對象名稱

我已經導入我的解決方案的JSON.NET格式化,但這不添加對象名稱

,現在是在MVC4創建的JSON:

[{"ID":36,"Name":"Test3","Description":"Description Test3"},{"ID": 37,"Name": "Test4","Description": "Description Test4"}] 

而且我想json看起來像這樣:

{"Goal":[{"ID":36,"Name":"Test3","Description":"Description Test3"},{"ID": 37,"Name": "Test4","Description": "Description Test4"}]} 

所以我喜歡將對象名稱(目標)包含在json中。

在我的API控制器的代碼我使用的是這樣的:

StoreDBContext db = new StoreDBContext(); 

    // 
    // GET /api/goals 
    public IQueryable<Goals> Get() 
    { 
     return db.Goals; 
    } 

我想我需要遍歷某處添加對象的名字,但我不知道如何...希望有人能幫我解決這個問題!

+2

這不是有效的JSON。 – SLaks 2012-04-06 12:41:52

+0

我編輯了我的帖子。你是對的,JSON無效。現在它(通過http://jsonlint.com/驗證)。我的意思是這樣。 – Hugo 2012-04-07 07:19:27

+0

請給我的問題的答案 [此處輸入鏈接的描述] [1] [1]:http://stackoverflow.com/questions/31323528/json-error-in-retrieving- data-from-sql-server-in-mvc4 – 2015-07-10 07:46:31

回答

3

返回是這樣的:

new { Goal = db.Goals().AsEnumerable().ToList() } 

您可以使用匿名對象添加不在對象屬性和東西。

如果您想要正確反序列化,您也可以爲JSON.NET編寫自定義轉換器,但如果您不關心輸出的反序列化,則上述解決方案將起作用。

+0

感謝您的回覆!目前我並不關心反序列化,所以這個解決方案應該足夠了。但是db對象(StoreDBContext)似乎沒有實現Get方法。 但是我在嘗試返回上述命令時出現以下錯誤: 'StoreDBContext'沒有包含'Get'的定義,也沒有找到接受'StoreDBContext'類型的第一個參數的擴展方法'Get'您是否錯過了使用指令或程序集引用? 我在這裏丟失了什麼? – Hugo 2012-04-07 07:32:38

+0

@Hugo對不起,我誤讀了您的代碼示例,更新了我的代碼 – 2012-04-07 12:43:55

+0

感謝您的更新,但是現在出現以下錯誤:「Can not隱式地將類型'System.Collections.Generic.IEnumerable '轉換爲'System.Linq.IQueryable '。顯式轉換存在(你是否缺少一個轉換?) 我嘗試了messing與代碼周圍,但不能得到它的工作... – Hugo 2012-04-08 07:24:58