更正JSON结果对象

本文关键字:对象 结果 JSON 更正 | 更新日期: 2023-09-27 18:04:33

我有一个这样的控制器动作:

List<string> abcd = new List<string>()
foreach (var i in images)
{
    abcd.Add("{url:'"+GetImageUrl(i)+"'}");
}     
return Json(abcd, JsonRequestBehavior.AllowGet);

所以abcd的输出是

["{url:'/PropertyImage/GetPropertyImage?imageId=1'}", "{url:'/PropertyImage/GetPropertyImage?imageId=2'}", "{url:'/PropertyImage/GetPropertyImage?imageId=8'}"]

但是我想要的结果是:

images:[{url:'/PropertyImage/GetPropertyImage?imageId=1'}, {url:'/PropertyImage/GetPropertyImage?imageId=2'}, {url:'/PropertyImage/GetPropertyImage?imageId=8'}]

在JavaScript中,我有

$.ajax({
     type: "GET",
     url: url,
     success: function (result) {
         console.log(JSON.stringify(result));
         var data = {
             images: [result]
         };
         template = "{{#images}}<a href='{{url}}'><img class='imageborder' src='{{url}}' style='width:150px;height:150px'></img></a>{{/images}}";
         renderedOutput= Mustache.to_html(template,data);
         $('#Propertyimagelinks').html(renderedOutput);
     }
 });

我怎样才能得到正确的输出?

更正JSON结果对象

比起尝试手动操作JSON字符串,使用ASP似乎简单得多。. NET MVC内置JSON序列化功能和一点Linq,像这样:

var abcd = images.Select(i => new { url = GetImageUrl(i) }).ToList();
return Json(abcd, JsonRequestBehavior.AllowGet);

在你的JavaScript结果处理程序中,使用这个:

var data = { images: result };

或者你也可以在你的控制器中使用:

var abcd = images.Select(i => new { url = GetImageUrl(i) }).ToList();
return Json(new { images = abcd }, JsonRequestBehavior.AllowGet);

在你的JavaScript中:

var data = result;