我有一个Web Api 2端点,它返回包含图像网址数组的Json。它的响应看起来像这样
{
"Status": 0,
"Message": "Success",
"Images": [
"http://some.image.com/somepath/SomeReport-0.png",
"http://some.image.com/somepath/SomeReport-1.png"
]
}
我希望json数组作为数组字符串返回。为了实现这一目标,我需要如何设置我的回复?我目前使用此方法设置数组和响应
// response.status and response.message are added before this
response.Images = imagePaths.Select(x => string.Format(urlString, Path.GetFileName(x)));
HttpResponseMessage apiResponse = Request.CreateResponse(HttpStatusCode.OK, response);
需要以字符串格式返回的数组的目的是我可以将它附加到html数据属性。现在,如果我像这样引用响应:
listItem.append('<a class="dd-option" data-path="' + response.Images + '" href="#"></a>');
属性中的内容类似于
data-attr="http://some.url.com/somepath/ReportStore/image-0.png,http://some.url.com/somepath/ReportStore/image-1.png"
而不是
data-attr="["http://some.url.com/somepath/ReportStore/image-0.png","http://some.url.com/somepath/ReportStore/image-1.png"]"
答案 0 :(得分:1)
如果您在javascript中执行此操作,则可以使用JSON.stringify
var jsonResponse =
{
"Status": 0,
"Message": "Success",
"Images": [
"http://some.image.com/somepath/SomeReport-0.png",
"http://some.image.com/somepath/SomeReport-1.png"
]
}
var images = JSON.stringify(jsonResponse.Images);
console.log(images);
$("#foo").append($("<li>").text("foo").attr("data-foo", images));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="foo">
</ul>
这会给你
<li data-foo="["http://some.image.com/somepath/SomeReport-0.png","http://some.image.com/somepath/SomeReport-1.png"]">foo</li>
但你需要注意引号,因为它可能会生成无效的HTML。
然而,即使你有
data-attr="http://some.url.com/somepath/ReportStore/image-0.png,http://some.url.com/somepath/ReportStore/image-1.png"
你可以使用String.join()
获得服务器端,然后你就可以使用javascript split()来重新获得数组。
var imagesArr = ($(this).data("attr")).split(",");
答案 1 :(得分:0)
只需将图像映射到字符串数组,然后从控制器返回该对象。
public string[] Get()
{
//create this array object from your images object
return new string[]{"imagePath1", "imagePath2", "imagePath3"};
}