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()

public ActionResult Get(int id)
{
    var item = ...
    return Json(item);
}
于 2012-10-17T20:22:09.173 に答える
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

返された JSON は正しいです。コントローラーで何も変更しないでください。

..しかし、あなたのJSループでは、 for in ループを持つオブジェクト

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

propertyName は、A、B、C を提供し、...

var value = obj[propertyName]

あなたに価値を与える

于 2012-10-17T21:38:25.873 に答える