0
我想写一个匿名方法用于将Json反序列化到DataContract。这使我可以重新使用某些东西,而无需为每个为每个json查询写的每个DataContract类编写相同的代码。匿名类型的反序列化json从字符串到DataContract的方法
我到目前为止的代码,如下所示:
public T Json2Object<T>(string json, Encoding encoding) {
T result;
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
using (Stream s = new MemoryStream((encoding ?? Encoding.UTF8).GetBytes(json ?? ""))) {
result = ser.ReadObject(s) as T;
}
return result;
}
它给我的错误在IDE如下:
怎么可以这样不硬调整编码的类型,使其按我的意图工作?
非常好,谢谢你。如果你有'T:class'的地方,我需要用特定的类来替换'class'。例如,如果我的datacontract类被命名为'Foo',那么它会被写为'where T:Foo'还是说'where T:class'仍然可以像你写的那样工作? –
@KraangPrime Nope,'T:class'正是你需要写的东西。它将'T'限制为*引用类型*。请注意,由于'int'是一个值类型,所以你将被禁止编写'Json2Object(someJson,someEncoding)'。如果你想能够传入'int',你需要使用转换方法。 –
Rob
太棒了。正是我需要的。谢谢 :) –