使用ASP.NET JsonResult类格式化JSON响应

时间:2015-04-09 16:47:24

标签: c# json asp.net-mvc asp.net-mvc-4 jsonresult

我正在尝试将BlueImp jQuery文件上传组件集成到我的ASP.NET 4网站中。我有文件上传工作和写入磁盘,但该组件要求我从服务器返回一个JSON对象作为成功的确认,以特定的格式:

{"files": [
  {
    "name": "picture1.jpg",
    "size": 902604,
    "url": "http:\/\/example.org\/files\/picture1.jpg",
    "thumbnailUrl": "http:\/\/example.org\/files\/thumbnail\/picture1.jpg",
    "deleteUrl": "http:\/\/example.org\/files\/picture1.jpg",
    "deleteType": "DELETE"
  },
  {
    "name": "picture2.jpg",
    "size": 841946,
    "url": "http:\/\/example.org\/files\/picture2.jpg",
    "thumbnailUrl": "http:\/\/example.org\/files\/thumbnail\/picture2.jpg",
    "deleteUrl": "http:\/\/example.org\/files\/picture2.jpg",
    "deleteType": "DELETE"
  }
]}

我想使用JsonResultClass在我的C#中返回此对象,但我不确定如何正确格式化响应。我可能会做这样的事情:

var uploadedFiles = new List<object>();

uploadedFiles.Add(new { name = "picture1.jpg", size = 902604, url = "http://example.org/files/picture1.jpg", thumbnailUrl = "http://example.org/files/thumbnail/picture1.jpg", deleteUrl ="http://example.org/files/picture1.jpg", deleteType = "DELETE" });
uploadedFiles.Add(new { name = "picture2.jpg", size = 902604, url = "http://example.org/files/picture1.jpg", thumbnailUrl = "http://example.org/files/thumbnail/picture1.jpg", deleteUrl ="http://example.org/files/picture1.jpg", deleteType = "DELETE" });

return Json(uploadedFiles);

...但是我不知道如何将它包装在外部'files'对象中。

有人能指出我(一个.NET新手试图学习!)在这里正确的方向。我查看了MSDN documentation,但没有详细介绍格式化或构建更复杂的JSON对象。

非常感谢。

1 个答案:

答案 0 :(得分:1)

替换:

return Json(uploadedFiles);

使用:

return Json(new {files = uploadedFiles});

使用属性&#34; files&#34;创建一个新的匿名类型,它将您的原始列表作为值。