我创建了一个新的ASP.NET MVC 4 Web应用程序并修改了默认的ValuesController,如下所示:
using System.Runtime.Serialization;
using System.Web.Http;
namespace WebSerializationTest.Controllers
{
public class ValuesController : ApiController
{
// GET api/values
public ApiResponse Get()
{
ApiResponse res = new ApiResponse();
res.Length = 120;
return res;
}
}
[DataContract]
public class ApiResponse
{
[DataMember(Name = "length")]
public int Length { get; set; }
}
}
现在,当我从浏览器执行请求时(Headers设置为Accept:application / json),我得到了这个JSON:
[
120
]
但是,当我将DataMember名称更改为其他任何名称时,甚至[DataMember(Name =“Length”)]
我得到了正确的JSON:
{
"Length" : 120
}
Is the string “length” forbidden or what is causing this behaviour?
顺便说一句.我将目标框架设置为.NET Framework 4,但我也尝试过.NET Framework 4.5.1,问题仍然存在.
最佳答案 事实证明,这是我使用的Firefox插件中的一个名为RESTClient的错误.
在Response Body(突出显示)选项卡中,JSON呈现不正确,但在Response Body(Raw)选项卡中,JSON是正确的.
我还发现它是一个known bug,自2012年以来一直没有修复.