C# WebAPI 2不序列化基元返回类型
我有一个WebAPI,它返回基本类型,比如int、Int64、UInt64等等C# WebAPI 2不序列化基元返回类型,c#,json,serialization,asp.net-web-api,C#,Json,Serialization,Asp.net Web Api,我有一个WebAPI,它返回基本类型,比如int、Int64、UInt64等等 public Int64 Count() { return 1337; } Returns: 1337 即使我的客户端使用HTML头请求数据 Accept: application/json API仍然只返回数字,因此在JSON术语中无效。在XML中,它将正确序列化为 <long>1337</long> 我在寻找更简单的方法,我可能最终会编写一个泛型类,它除了包装原语之外什么
public Int64 Count()
{
return 1337;
}
Returns:
1337
即使我的客户端使用HTML头请求数据
Accept: application/json
API仍然只返回数字,因此在JSON术语中无效。在XML中,它将正确序列化为
<long>1337</long>
我在寻找更简单的方法,我可能最终会编写一个泛型类,它除了包装原语之外什么都不做。“API仍然只是返回JSON中的数字”:你是什么意思?它到底返回什么,您期望什么?您说当http头设置为
Accept:application/JSON
时,数据以JSON的形式返回,这正是它应该做的,您期望发生什么?它只返回数字,这不是有效的JSON。我的客户端JSON反序列化程序在这方面失败。那么,您希望数字的JSON表示是什么?JSON.NET将字符串“1337”反序列化为int值1337没有问题。我不知道它是否是有效的JSON,但在我看来,它是唯一有意义的表示形式。据我所知,1337
不是有效的JSON,但@thomasleveque有一点:您希望表示形式是什么?int不是键/值对。如果您不想只返回int的模型,那么返回动态的怎么样<代码>返回新的{long=1337}代码>
public Dictionary<string, Int64> Count()
{
return new Dictionary<string, Int64>() {{"Count", 1337}};
}
public Number Count()
{
return new Number(1337);
}
Returns:
{ "Value" : 1337 }