2

クラス "Thing" の .NET オブジェクトをシリアル化するとします。プロキシが JSON 応答を受信したときの JSON オブジェクトのルート プロパティは「d」です。プロパティをルート プロパティに追加する方法、または asmx Web メソッドで ASP.NET から JSON オブジェクトに兄弟プロパティを追加する方法はありますか? 今、私はハックを持っています.JSONオブジェクトの各「モノ」オブジェクトに追加のパラメーターとして値を入れています。

モノのクラスと Web サービスの ASP.NET コード:

namespace Web.Controls.ThingList
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService]
    public class ThingListService : System.Web.Services.WebService
    {
        [Serializable]
        public class Thing
        {
            public string id;
            public string name;
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false, XmlSerializeString = false)]
        public List<Thing> GetThingList(string start, string limit)  //
        {
            return GetList("Thing", start, limit);
        }

    }
}

JSON オブジェクト:

{
    "d": [{
        "__type": "Web.Controls.ThingList.ThingListService+Thing",
        "id": "1",
        "name": "ONE"
    }, {
        "__type": "Web.Controls.ThingList.ThingListService+Thing",
        "id": "2",
        "name": "TWO"
    }]
}
4

1 に答える 1

2

これが私がそれを解決した方法です:

    reader: {
        type: 'json',
        model: 'Thing',
        totalProperty: 'd.recordCount',
        idProperty: 'id',
        root: 'd.resultSet'
    },


[Serializable]
public class ProxyResponse
{
    public string recordCount;
    public List<Thing> resultSet;
}

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false, XmlSerializeString = false)]
public ProxyResponse GetThingList(string start, string limit)  //
{
    ProxyResponse response = new ProxyResponse();

    List<Thing> list = GetList("Thing", start, limit);

    response.recordCount = list.Count.ToString();
    response.resultSet = list;

    return response;
}
于 2012-09-25T01:11:49.760 に答える