0

我有这堂课。

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; }
}

…………

更新2:

这个问题仍然悬而未决,因为所提供的答案都无法产生修复。

4

5 回答 5

2

您可以JsonResult通过调用Json()您的操作方法返回 a 。

public ActionResult Get(int id)
{
    var item = ...
    return Json(item);
}
于 2012-10-17T20:22:09.173 回答
0

返回的 JSON 是正确的,不要更改控制器中的任何内容

..但是在你的 JS 循环中使用 for in 循环的对象

for(var propertyName in obj){
     ...
}

propertyName 为您提供 A、B 和 C 以及...

var value = obj[propertyName]

给你价值

于 2012-10-17T21:38:25.873 回答
0

您是否尝试使用System.Web.Mvc.JsonResult的 JsonResult ?

public JsonResult Val()  {}

希望这可以帮助。

于 2012-10-17T20:23:06.440 回答
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");
}
于 2012-10-17T20:23:20.310 回答
0

添加 ApiController 并使用 System.Web.Http;

于 2016-02-27T17:13:48.540 回答