当DataMember的名称是"长度"

时间:2015-07-16 12:53:28

标签: c# json asp.net-mvc-4

我创建了一个新的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,问题仍然存在。

1 个答案:

答案 0 :(得分:2)

原来这是我使用的Firefox插件中名为 RESTClient 的错误。

响应正文(突出显示)标签中,JSON呈现错误,但在响应正文(原始)标签中,JSON是正确的。

我还发现它是known bug,自2012年以来一直没有修复。