¿Serializador / deserializador JSON optimizado como método de extensión?

Me gustaría serializar cualquier objeto lo más fácilmente posible a JSON, y luego convertirlo de nuevo al objeto type = safe simplemente. ¿Alguien puede decirme qué estoy haciendo mal en el método de extensión "FromJSONString"?

Editar

Para su comodidad, a continuación encontrará un método de extensión completo y funcional. Avísame si ves errores.

     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;
        }
    }

Respuestas a la pregunta(2)

Su respuesta a la pregunta