序列化元组<字符串、字节>而不返回m_Item1、m_Item2

本文关键字:返回 Item2 Item1 元组 字符串 字节 序列化 | 更新日期: 2023-09-27 17:56:48

我正在开发一个 ASP.NET Web Api应用程序,其中包含.NET Framework 4.6.1,C#和 JSON.Net。

我在返回元组列表时遇到问题。我得到这个json:

[
  {
    "m_Item1": "88962730000000378995",
    "m_Item2": 2
  }
]

我正在使用以下代码:

HttpResponseMessage response = null;
List<Tuple<string, byte>> exCodes = null;
[ ... ]
response = Request.CreateResponse(HttpStatusCode.OK, exCodes);

但我想得到这个:

[  {
    "Item1": "88962730000000378995",
    "Item2": 2
  }
]

要获取该代码,我必须使用此代码:

HttpResponseMessage response = null;
List<Tuple<string, byte>> exCodes = null;
[ ... ]
var j = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
j.SerializerSettings.ContractResolver = new DefaultContractResolver();
response = Request.CreateResponse(HttpStatusCode.OK, exCodes);

但我不确定这段代码j.SerializerSettings.ContractResolver = new DefaultContractResolver();是否会影响服务的其余部分。

有没有另一种方法可以在不使用new DefaultContractResolver();的情况下获得我想要的 Json?

序列化元组<字符串、字节>而不返回m_Item1、m_Item2

您可以创建一个匿名对象:

var anon = exCodes.Select(x => new { x.Item1, x.Item2 });
response = Request.CreateResponse(HttpStatusCode.OK, anon);