Frage

H Chaps, Ich versuche ServiceStack.Text für JSON Parsen zu verwenden (es scheint besser zu performen als JSON.Net in verschiedenen Benchmarks Ich habe gesehen). Aber ich bin nicht die Ergebnisse, ich erwarte. Die Klasse Ich bin versucht zu deserialize sieht wie folgt aus:

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

Und ich bin Berufung auf den Parser wie diese

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

Jedoch habe ich eine Instanz zurück von diesem Anruf bin immer der keiner der Werte gesetzt hat. dh Id, Method und Params sind alle null. Bin ich mit dieser API korrekt?

War es hilfreich?

Lösung

Es scheint, dass ServiceStack nicht öffentliche Bereiche nicht unterstützt, nur öffentliche Eigenschaften. Also, wenn ich mein Modellobjekts, um die Änderung es folgende alles funktioniert.

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

Beachten Sie die Zugabe von Getter und Setter für jede Eigenschaft.

Andere Tipps

Ich glaube, Sie wollen JsonSerializer statt TypeSerializer.

TypeSerializer ist ein neumodisches JSV Format, dass Herr Mythz auf seinem Blog Detail hier: http: //www.servicestack.net/mythz_blog/?p=176

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top