是否有可能将System.Text.Encoding类从JSON反序列化为c#中的代码?

本文关键字:代码 反序列化 JSON 有可能 System Text 类从 Encoding 是否 | 更新日期: 2023-09-27 18:07:12

我有一个类,我通过我的Web API控制器作为JSON对象返回。

public class ModelClass
{
   public string QueryString {get; set;}
   public Encoding Encoding {get; set;}
   public BankLinkModel(string queryString , Encoding encoding)
   {
      this.QueryString = queryString ;
      this.Encoding = encoding;
   }
}

但是当我试图用我的代码在另一个应用程序(进行API调用)中反序列化这个模型时:

var responseFromApi = ApiClient.get(string.Format("some/magic/url?id={0}", "663"));
var query = responseFromApi.Content.ReadAsAsync<ModelClass>().Result;

我得到一个错误:

Type是一个接口或抽象类,不能被实例化。

这是因为System.Text.Encoding是一个抽象类。有办法让我反序列化System.Text.Encoding类吗

是否有可能将System.Text.Encoding类从JSON反序列化为c#中的代码?

不序列化Encoding实例,可以序列化Encoding.EncodingName属性,反序列化时调用Encoding.GetEncoding(name)方法创建实例

Sriram Sakthivel的答案最终没有起作用(参见注释),但是序列化不同属性背后的基本思想是正确的方法。

不使用Encoding.EncodingName,序列化Encoding.WebNameEncoding.GetEncoding( string name )接受WebName属性的值:

首选编码的代码页名称。WebName属性返回的任何值都是有效的。可能的值列在出现在Encoding类主题中的表的Name列中。

反序列化变成Encoding.GetEncoding( "utf-8" )