3

我正在尝试确定如何__type从 asmx WebService 中排除我的 JSON 响应。

我要返回的类的构造如下。

public class MyClassName
{
    private string _item1 = string.Empty;
    private string _item2 = string.Empty;

    public string item1 = { get { return _item1; } set { _item1 = value; } }
    public string item2 = { get { return _item2; } set { _item2 = value; } }
}

public class MyClassName_List : List<MyClassName>
{
    public MyClassName_List() {}
}

然后我有一个数据访问层和业务逻辑层,它返回一个填充的MyClassName_List. 我的 WebMethod 设置如下。

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class MyClassName_WebService : System.Web.Services.WebService
{
    [WebMethod]
    public MyClassName_List GetList()
    {
        return MyClassName_List_BusinessLogicLayer.GetList();
    }
}

JSON 对象返回的结构如下。

[
    {
    item1: "item1-1 text",
    item2: "item1-2 text",
    __type: "NamespaceUsed.MyClassName"
    },
    {
    item1: "item2-1 text",
    item2: "item2-2 text",
    __type: "NamespaceUsed.MyClassName"
    },
]

我只想按如下方式返回 JSON 对象。

[
    {
    item1: "item1-1 text",
    item2: "item1-2 text"
    },
    {
    item1: "item2-1 text",
    item2: "item2-2 text"
    }
]

我已经尝试过这里的建议,但我似乎无法正确实施。非常感谢您对此的任何帮助!

4

1 回答 1

8

方法如下。

public class MyClassName
{
    private string _item1 = string.Empty;
    private string _item2 = string.Empty;

    public string item1 = { get { return _item1; } set { _item1 = value; } }
    public string item2 = { get { return _item2; } set { _item2 = value; } }

    protected internal MyClassName() { } //add a protected internal constructor to remove the returned __type attribute in the JSON response
}

public class MyClassName_List : List<MyClassName>
{
    public MyClassName_List() {}
}

我希望这对其他人也有帮助!

于 2012-06-01T14:30:06.890 回答