我已经找到了几个解决方案,这在网络上是为WCF的网络服务,而不是ASP的网络服务。
目前,我收到一个JSON响应,内容如下:
{"d":[{"__type":"NetworkFuzzWebSvc.Sessions","BaseUri":"http://localbox","SessionId":"43b8716f-40ab-43bf-8311-575c2ecd2730}]}
我需要它返回:
{"Sessions":["BaseUri":"http://localbox","SessionId":"43b8716f-40ab-43bf-8311-575c2ecd2730}]}
下面是我正在使用的Web服务代码的副本(NetFuzzWebSvc.asmx):
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Web.Script.Services;
namespace NetworkFuzzWebSvc
{
public class Sessions
{
public string BaseUri;
public string SessionId;
}
/// <summary>
/// Summary description for NetFuzzJson
/// </summary>
[WebService(Namespace = "http://localbox")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class NetFuzzJson : WebService
{
List<Sessions> Sessions = new List<Sessions>
{
new Sessions{
BaseUri = "http://localbox/",
SessionId="43b8716f-40ab-43bf-8311-575c2ecd2730"
}
};
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<Sessions> GetAllSessions()
{
return Sessions;
}
}
有人能解决这个问题吗?谢谢!
4条答案
按热度按时间oxalkeyp1#
对于删除"d"和"__类型":
. svc
.配置文件
日本:
wi3ka0sx2#
我不认为你可以,我认为这是返回的json的格式。
您可以尝试去掉ResponseFormat位,返回一个字符串并使用
或者使用JSON.net库更好。
另请参阅How to not serialize the __type property on JSON objects,了解如何删除__type位。
to94eoyn3#
我有同样的问题,我的解决方案是使用Newtone Json转换:
你也可以在aspx的网页中使用这个解决方案(web方法)
jchrr9hc4#
如果您使用的是ServiceStack.Text JSON Serializer,则只需:
这个功能在v2.28中被自动添加了回来,但是上面的代码将其排除在序列化之外。你也可以通过
Type
改变这个行为: