Pregunta

CHAPS H, Estoy tratando de utilizar ServiceStack.Text para JSON análisis (que parece estar funcionando mejor que JSON.Net en varios puntos de referencia que he visto). Pero no estoy obteniendo los resultados que estoy esperando. La clase que estoy tratando de miradas deserializar como esto:

[DataContract]
public class RpcRequest<T>
{
    [JsonProperty("id")]
    [DataMember(Name="id")]
    public String Id;

    [JsonProperty("method")]
    [DataMember(Name="method")]
    public String Method;

    [JsonProperty("params")]
    [DataMember(Name="params")]
    public T Params;

    [JsonIgnore]
    [IgnoreDataMember]
    public Policy Policy;
}

Y yo estoy invocando el analizador de esta manera

public static class Json
{
    public static T Deserialize<T>(string serialized)
    {
        return TypeSerializer.DeserializeFromString<T>(serialized);
    }
}
...
RpcRequest<Params> myRequeset = Json.Deserialize(packet);

Sin embargo, yo estoy haciendo una vuelta ejemplo, a partir de esa llamada que no tiene ninguno de los valores del conjunto. es decir Id, Method y Params son todos nulos. ¿Estoy usando esta API correctamente?

¿Fue útil?

Solución

Parece que ServiceStack no admite campos públicos, sólo las propiedades públicas. Así que si cambio de objeto de modelo a la siguiente funciona todo.

[DataContract]
public class RpcRequest<T>
{
    [JsonProperty("id")]
    [DataMember(Name="id")]
    public String Id { get; set; }

    [JsonProperty("method")]
    [DataMember(Name="method")]
    public String Method { get; set; }

    [JsonProperty("params")]
    [DataMember(Name="params")]
    public T Params { get; set; }

    [JsonIgnore]
    [IgnoreDataMember]
    public Policy Policy { get; set; }
}

Tenga en cuenta la adición de captadores y definidores a cada propiedad.

Otros consejos

Creo que quieres JsonSerializer en lugar de TypeSerializer.

TypeSerializer es un nuevo formato de cuño JSV que el Sr. Mythz detalla en su blog aquí: http: //www.servicestack.net/mythz_blog/?p=176

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top