【问题标题】:asp.net web api - json serialization of interface member resulting in mystifying errorasp.net web api - 接口成员的 json 序列化导致神秘错误
【发布时间】:2012-05-02 15:29:26
【问题描述】:

我正在使用 ASP.NET Web API,我正在尝试返回一个如下所示的类的实例:

public class Whatever
{
  public int MyInt {get; set;}
  public IFoo MyFoo {get; set;}
}

当此实例序列化为 JSON 时,IFoo 成员(可能是实现 IFoo 的多个类中的任何一个的实例)会奇怪地序列化。属性名称已写入,但它的值是一大段 HTML,其中包含如下错误消息:

You must write an attribute 'type'='object' after writing the attribute with local name '__type'.

这是框架告诉我它不知道如何将实例转换为接口吗?还是别的什么?

【问题讨论】:

  • 没有解释的反对票没有任何意义。
  • 我的实验表明问题在于成员被表示为接口。当表示为具体类型时,错误消失。但是在某些情况下,我需要能够将多种类型分配给类的同一个成员。那我该怎么办?

标签: asp.net json asp.net-web-api


【解决方案1】:

似乎每当框架尝试序列化类型为接口的成员时,就会发生此错误。除了更改成员以使其类型具体之外,我找不到其他方法来解决这个问题。

【讨论】:

  • 是的,你不能序列化一个接口。您必须提供 KnownTypes 和所有这些。避免在 Web API 中公开接口。
  • 感谢您的回复。我以前从未遇到过 KnownTypes 的事情。正如您所说,无论如何,在视图模型类中拥有接口成员可能不是很好的设计。
猜你喜欢
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
相关资源
最近更新 更多