我创建了一个新的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
}
是字符串"长度"禁止或导致此行为的原因是什么?
顺便说一下。我将目标框架设置为.NET Framework 4,但我也尝试过.NET Framework 4.5.1,问题仍然存在。
答案 0 :(得分:2)
原来这是我使用的Firefox插件中名为 RESTClient 的错误。
在响应正文(突出显示)标签中,JSON呈现错误,但在响应正文(原始)标签中,JSON是正确的。
我还发现它是known bug,自2012年以来一直没有修复。