【问题标题】:http response return type deserialization into a specific typehttp响应返回类型反序列化为特定类型
【发布时间】:2023-03-14 22:17:01
【问题描述】:

我想反序列化从 HTTP Web 请求接收到的流主体作为响应。但问题是当反序列化必须作为特定类型完成时。我有多个 Get,它们有不同的响应(一个返回类型 p,其他返回类型 q)。我想要一个通用的方法,它可以反序列化任何类型并返回一些通用的东西,当类型种姓会返回我所需的值。

【问题讨论】:

  • 我可以尝试 catch 块并尝试在其中反序列化它,但这将是一种糟糕的编程习惯。我还有哪些其他选择?

标签: json wcf rest


【解决方案1】:

魔术酱知道要填充哪种类型。一旦你有了它,创建一个通用的反序列化器就很容易了:

public object Deserialize( string serialized, Type T ) {
    if ( string.IsNullOrEmpty( serialized ) ) {
        return null;
    }
    XmlSerializer xs = new XmlSerializer( T );
    MemoryStream ms = new MemoryStream( StringToBytes( s ) ?? new byte[0] );
    XmlTextWriter tw = new XmlTextWriter( ms, Encoding.UTF8 );
    return xs.Deserialize( ms );
}

把它变成一个泛型方法也很容易。

【讨论】:

  • 好吧,我没有其他选择来找出返回的类型。所以我所做的是我添加了一个 HTTP Header('ResponseType'),它携带了服务端响应中返回的对象的类型。在客户端,我只是检查了响应头并相应地反序列化它。
猜你喜欢
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多