2012-04-06 89 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