¿Cómo omitir Obtener solo propiedades en el serializador json de la stack de servicios?

Tengo un objeto que estoy ToJson() usando el ToJson() del espacio de nombres ServiceStack.Text.

¿Cómo omitir todas las características de GET solo durante la serialización? ¿Hay algún atributo como [Ignore] o algo con lo que pueda decorar mis propiedades, para que puedan omitirse?

Gracias

Los serializadores de texto de ServiceStack siguen el comportamiento del serializador DataContract de .NET, lo que significa que usted puede ignorar a los miembros de los datos al usar el atributo de [IgnoreDataMember]

 public class Poco { public int Id { get; set; } public string Name { get; set; } [IgnoreDataMember] public string IsIgnored { get; set; } } 

Una alternativa opcional es decorar todas las propiedades que desee serializar con [DataMember] . Las propiedades restantes no están serializadas, por ejemplo:

 [DataContract] public class Poco { [DataMember] public int Id { get; set; } [DataMember] public string Name { get; set; } public string IsIgnored { get; set; } } 

Finalmente, también hay una opción no intrusiva que no requiere atributos, por ejemplo:

 JsConfig.ExcludePropertyNames = new [] { "IsIgnored" }; 

Especificar dinámicamente las propiedades que se deben serializar

Los Serializadores de ServiceStack también admiten la serialización dinámicamente controlado al proporcionar los métodos convencionalmente llamados ShouldSerialize({PropertyName}) para indicar si una propiedad debe ser serializada o no, por ejemplo:

 public class Poco { public int Id { get; set; } public string Name { get; set; } public string IsIgnored { get; set; } public bool? ShouldSerialize(string fieldName) { return fieldName == "IsIgnored"; } } 

Más ejemplos en ConditionalSerializationTests.cs

Para los miembros que aceptan nulos, también tienes la posibilidad de establecerlo como nulo antes de la serialización.

Esto es particularmente útil si desea crear un único modelo de vista / API que se reutilice para varias llamadas de API. El servicio puede retocarlo antes de configurarlo en el objeto de respuesta.

Ejemplo:

  public SignInPostResponse Post(SignInPost request) { UserAuthentication auth = _userService.SignIn(request.Domain, true, request.Username, request.Password); // Map domain model ojbect to API model object. These classes are used with several API calls. var webAuth = Map(auth); // Exmaple: Clear a property that I don't want to return for this API call... for whatever reason. webAuth.AuthenticationType = null; var response = new SignInPostResponse { Results = webAuth }; return response; } 

Desearía que hubiera una manera de controlar dinámicamente la serialización de todos los miembros (incluidos los que no admiten nulos) en función de los puntos finales.

Intereting Posts