ServiceStack.Text JSON parsing su .Net 4.0
-
10-10-2019 - |
Domanda
screpolature H, Sto cercando di utilizzare ServiceStack.Text per JSON parsing (sembra funzionare meglio di JSON.Net in vari punti di riferimento che ho visto). Ma io non sto ottenendo i risultati che mi aspetto. La classe Sto tentando di sguardi deserializzare in questo modo:
[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;
}
E sto invocando il parser come questo
public static class Json
{
public static T Deserialize<T>(string serialized)
{
return TypeSerializer.DeserializeFromString<T>(serialized);
}
}
...
RpcRequest<Params> myRequeset = Json.Deserialize(packet);
Comunque sto ottenendo un indietro esempio da quella chiamata, che non ha nulla della valori impostati. cioè Id
, Method
e Params
sono tutti nulli. Sto usando correttamente questa API?
Soluzione
Sembra che ServiceStack non supporta i campi pubblici, solo le proprietà pubbliche. Quindi, se io cambio il mio oggetto del modello al seguente tutto funziona.
[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; }
}
Si noti l'aggiunta di getter e setter per ogni proprietà.
Altri suggerimenti
Penso che si desidera JsonSerializer
invece di TypeSerializer
.
TypeSerializer
è un nuovo conio formato JSV che il signor Mythz dettagli sul suo blog qui: http: //www.servicestack.net/mythz_blog/?p=176