【发布时间】:2012-09-20 11:52:35
【问题描述】:
我有一个 WCF 服务,我正在构建一个名为 FinalList 的对象,其中包含一个名为 Chart 的对象和一个 List<Data>。
我想以以下格式返回我的ajax函数json数据:
{"d":{"chart":{"caption":"Year","exportatclient":"1","exportenabled":"1","exporthandler":"chartExporter","labelDisplay": "wrap","numberprefix":"","showborder":"1","slantLabels":"1","useroundedges":null,"yaxisname":"数字 的 hits"},"data":[{"label":"1960s","link":null,"tooltext":null,"value":3},{"label":"1970s","link": null,"tooltext":null,"value":56},{"label":"1980s","link":null,"tooltext":null,"value":98}]}}
但是我的服务是这样返回的:
{"d":{"__type":"FinalList:#MyNamespace.FusionChartsFields","chart":{"__type":"Chart:#MyNamespace.FusionChartsFields","caption":"Year","exportatclient ":"1","exportenabled":"1","exporthandler":"chartExporter","labelDisplay":"wrap","numberprefix":"","showborder":"1","slantLabels":" 1","useroundedges":null,"yaxisname":"数字 的 hits"},"data":[{"__type":"Data:#MyNamespace.FusionChartsFields","label":"1960s","link":null,"tooltext":null,"value":3}, {"__type":"Data:#MyNamespace.FusionChartsFields","label":"1970s","link":null,"tooltext":null,"value":56},{"__type":"Data:# MyNamespace.FusionChartsFields","label":"1980s","link":null,"tooltext":null,"value":98}]}}
当我使用 WebServices (asmx) 时,我只需要将我的类声明为“对象”而不是 FinalList,那么结果就是我需要的正确 json 格式。
我尝试将它转换为字符串,它给我带来了正确的东西,但包括 '\'(例如 {"d":{\"chart\":{\"caption\":\"Year\")和这不是我想要的。
有人知道如何删除这些“__type”和类名吗?
我正在使用 .Net 4
我的 FinalList 类如下:
public class FinalList
{
private Chart _chart;
private List<Data> _data = new List<Data>();
public Chart chart
{
get { return _chart; }
set { _chart = value; }
}
public List<Data> data
{
get { return _data; }
set { _data = value; }
}
}
我的服务合同包含
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
在其声明之上。
【问题讨论】:
-
你的模型类定义是什么样的? (
__type通常是对 DataContractSerializer 关于如何转换接口或抽象基类的提示。) -
我的 svc.cs 中的类在其声明上方有“[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]”。