ServiceStack.Text JSON Parsen auf .Net 4.0
-
10-10-2019 - |
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?
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