我正在尝试确定如何从asmx WebService中排除我的JSON响应中的__type
。
我返回的类构造如下。
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"
}
]
我已尝试过here的建议,但似乎无法正确实施。对此有任何帮助非常感谢!
答案 0 :(得分: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() {}
}
我希望这也有助于其他人!