我有这门课。
public class SDS
{
public Guid A { get; set; }
public Guid B { get; set; }
public String C { get; set; }
}
我像这样返回json
public HttpResponseMessage Val()
{
SDS svr = new SDS();
svr.A = ...
svr.B = ...
svr.C = ...
return Request.CreateResponse(HttpStatusCode.OK, json_serializer.Serialize(svr), "application/json");
}
在客户端,我使用像这样的jquery
var obj = jQuery.parseJSON(jqXHR.responseText);
问题是返回的json是这样的,我无法迭代值或通过索引访问元素:
{"A":"3a9779fe-9c92-4208-b34d-5113e0548d50","B":"206575a5-8a90-4a13-89ec-910e5a9a35a1","C":"Meta"}
要解决这个问题,我必须这样做,这有效:
obj = jQuery.parseJSON('{"List":[' + obj + ']}');
我的问题是有没有办法在类上使用一个属性,以便它返回一个我可以使用的json?
[SomeAttribute name="List"]
public class SDS
{
public Guid A { get; set; }
public Guid B { get; set; }
public String C { get; set; }
}
... ... ...
UPDATE2:
此问题仍然存在,因为所提供的答案都无法解决问题。
答案 0 :(得分:2)
您可以在操作方法中调用JsonResult
来返回Json()
。
public ActionResult Get(int id)
{
var item = ...
return Json(item);
}
答案 1 :(得分:0)
答案 2 :(得分:0)
嗯,你要返回一个单独的对象,而不是列表,但你可以这样做:
public HttpResponseMessage Val()
{
SDS svr = new SDS();
svr.A = ...
svr.B = ...
svr.C = ...
var list = new {List = new [] {svr}};
return Request.CreateResponse(HttpStatusCode.OK, json_serializer.Serialize(svr), "application/json");
}
答案 3 :(得分:0)
返回的JSON是正确的,不要更改控制器中的任何内容
..但在你的JS循环中,带有for循环的对象
for(var propertyName in obj){
...
}
propertyName为您提供A,B和C. 和...
var value = obj[propertyName]
为您提供值
答案 4 :(得分:0)
添加ApiController并使用System.Web.Http;