gpt4 book ai didi

c# - 为什么当 DataMember 的名称为 "length"时,我的整个对象都序列化为 Array

转载 作者:行者123 更新时间:2023-11-30 12:25:26 25 4
gpt4 key购买 nike

我创建了一个新的 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; }
}
}

现在,当我从浏览器发出请求时( header 设置为接受: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,但问题仍然存在。

最佳答案

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

Response Body(Highlight) 选项卡中,JSON 呈现不正确,但在Response Body (Raw) 选项卡中,JSON 是正确的。

我还发现它是一个 known bug自 2012 年以来一直未修复。

关于c# - 为什么当 DataMember 的名称为 "length"时,我的整个对象都序列化为 Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31454741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com