我正在开发一个 ASP .Net Core 3.1 应用程序,使用 2.2 从另一个应用程序移植部分代码。到目前为止,我想从 NewtonSoft JSON 序列化库切换到新的 System.Text.Json,但我遇到了一些麻烦。
考虑一个函数来提供具有此返回类型的 HTTP-GET 服务:
[HttpGet("myservice")]
public async Task<ActionResult<object>> GetDataAsync( ...
然后,最后一部分可以描述如下:
var items = new List<IMyInterface>();
int totalCount = ...
int min = ...
int max = ...
return new ActionResult<object>(new
{
totalCount,
min,
max,
items
});
但是,它不起作用:items 集合由其声明的类型 (IMyInterface) 序列化,而不是实际类型。我在这里读到这是一种预期的行为,尽管对我来说不是那么直观。
我的问题是:是否有任何方便而可靠的方法来利用新的序列化程序,甚至处理匿名对象?每次我可以内联组合结果时,我都会避免创建一个特定的对象。
更新:
这样做似乎可行,但看起来真的很难看:
return new ActionResult<object>(new
{
totalCount,
min,
max,
items = items.Cast<object>()
});