C# 将对象返回为json
我有这门课C# 将对象返回为json,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我有这门课 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 = ...
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");
}
var obj = jQuery.parseJSON(jqXHR.responseText);
在客户端,我像这样使用jquery
public HttpResponseMessage Val()
{
SDS svr = new SDS();
svr.A = ...
svr.B = ...
svr.C = ...
return Request.CreateResponse(HttpStatusCode.OK, json_serializer.Serialize(svr), "application/json");
}
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; }
}
。。。
...
更新2:
此问题仍然存在,因为提供的答案都无法生成修复。您可以通过调用操作方法返回
public ActionResult Get(int id)
{
var item = ...
return Json(item);
}
您是否尝试使用来自的JsonResult
希望这有帮助。好吧,您返回的是单个对象,而不是列表,但您可以执行以下操作:
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");
}
返回的JSON是正确的,不要更改控制器中的任何内容 ..但在JS循环中,对象使用for-in循环
for(var propertyName in obj){
...
}
propertyName为您提供A、B和C
而且
提供值添加ApiController并使用System.Web.Http 谢谢,但是我得到的名称“Json”在当前上下文中不存在。可能是因为我使用WEB APIvar list=new{list=svr};返回{“列表”:{“A”:“3a9779fe-9c92-4208-b34d-5113e0548d50”,“B”:“206575a5-8a90-4a13-89ec-910e5a9a35a1”,“C”:“Meta”}而不是{“列表”:{“A”:“3a9779fe-9c92-4208-b34d-5113e0548d50”,“B”:“206575a5-8a90-4a13-89ec-910e5a9a35a1”,“C”:“Meta”}因为它应该工作,但不知道为什么会返回这个列表”{,而不是像这样的{“列表”:[{…}]}。jQuery.parseJSON无法解析“{”列表“:[{…}]}”看起来WebAPI的情况发生了变化。我将编辑我的答案以返回到您原来的方法。我忘了注意我使用的是WEB APIjQuery。parseJSON无法将json解析为数组,因此obj[n]不起作用。因为在对象上工作时,它访问对象的属性,就像您通过字典的键一样,我将对其进行编辑以澄清使用它来获取obj:var obj=jQuery.parseJSON(jqXHR.responseText);当然,我正是这样做的,它无法将json解析为数组。这太短了,不是一个好的答案。请考虑扩展它或将其移动到评论。