是否有可能将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
类吗
不序列化Encoding
实例,可以序列化Encoding.EncodingName
属性,反序列化时调用Encoding.GetEncoding(name)
方法创建实例
Sriram Sakthivel的答案最终没有起作用(参见注释),但是序列化不同属性背后的基本思想是正确的方法。
不使用Encoding.EncodingName
,序列化Encoding.WebName
。Encoding.GetEncoding( string name )
接受WebName
属性的值:
首选编码的代码页名称。WebName属性返回的任何值都是有效的。可能的值列在出现在Encoding类主题中的表的Name列中。
反序列化变成Encoding.GetEncoding( "utf-8" )