1
我創建了一個Web服務函數返回一個對象(匿名LINQ結果)匿名回報
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public object GetUser()
{
List<string> users = new List<string>
{
"Nora Aunor",
"Pilita Corrales"
};
var result = users.Select(u => new
{
Name = u,
Birthdate = DateTime.Now
})
.ToList();
var retVal = new
{
Data = result,
Count = result.Count
};
return retVal;
}
,如果我使用Fiddler得到響應,則它返回OK什麼數據我預計
但如果我使用的瀏覽器,它只是返回一個錯誤
System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: <>f__AnonymousType2`2[System.Collections.Generic.List`1[<>f__AnonymousType1`2[System.String,System.DateTime]],System.Int32] cannot be serialized because it does not have a parameterless constructor.
at System.Xml.Serialization.TypeDesc.CheckSupported()
at System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean directReference, Boolean throwOnError)
at System.Xml.Serialization.XmlSerializationWriter.CreateUnknownTypeException(Type type)
at System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(String name, String ns, Object o, Boolean xsiType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(String n, String ns, Object o, Boolean isNullable, Boolean needType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_anyType(Object o)
at Microsoft.Xml.Serialization.GeneratedAssembly.ObjectSerializer1.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
at System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces)
at System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse response, Stream outputStream, Object returnValue)
at System.Web.Services.Protocols.HttpServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
at System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
at System.Web.Services.Protocols.WebServiceHandler.Invoke()
問題:如何顯示結構+匿名方法的數據轉換成JSON,將在瀏覽器中顯示出這樣
{
"d": {
"Data": [{
"Name": "Nora Aunor",
"Birthdate": "\/Date(1393578983512)\/"
},
{
"Name": "Pilita Corrales",
"Birthdate": "\/Date(1393578983512)\/"
}],
"Count": 2
}
}
或默認XML結果。
預先感謝
可能的重複[從MVC 4 Web Api返回匿名類型失敗並出現序列化錯誤](http://stackoverflow.com/questions/14962134/returning-an-anonymous-type-from -mvc-4-web-api-fails-with-a-serialization-error) – sloth
@DominicKexel我不認爲這是你鏈接的問題的重複。 OP使用的是較早的ASMX Web服務,而不是MVC或Web API。 –