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
太棒了。正是我需要的。謝謝 :) –