Вы должны предоставить строку JSON в MemoryStream для декодирования.В частности, вы должны изменить:
MemoryStream stream1 = new MemoryStream();
, чтобы на самом деле получить байты строки:
MemoryStream stream1 = new MemoryStream(Encoding.UTF8.GetBytes(obj))
При этом я бы также позаботился о том, чтобы правильно очистить память и уничтожить мои объекты... Кроме того, вместо использования StreamReader (который также должен быть удален), просто перекодируйте поток памяти в виде строки UTF-8.Ниже приведен код очистки.
public static String ToJSONString(this Object obj)
{
using (var stream = new MemoryStream())
{
var ser = new DataContractJsonSerializer(obj.GetType());
ser.WriteObject(stream, obj);
return Encoding.UTF8.GetString(stream.ToArray());
}
}
public static T FromJSONString<T>(this string obj)
{
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(obj)))
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
T ret = (T)ser.ReadObject(stream);
return ret;
}
}