H 伙计们, 我正在尝试使用 ServiceStack.Text 进行 JSON 解析(在我见过的各种基准测试中,它似乎比 JSON.Net 表现更好)。但是我没有得到我期望的结果。我试图反序列化的类如下所示:
[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;
}
我正在这样调用解析器
public static class Json
{
public static T Deserialize<T>(string serialized)
{
return TypeSerializer.DeserializeFromString<T>(serialized);
}
}
...
RpcRequest<Params> myRequeset = Json.Deserialize(packet);
但是我从那个没有设置任何值的调用中得到一个实例。即Id
、Method
和Params
都是空的。我是否正确使用了这个 API?
最佳答案
好像ServiceStack不支持public fields,只支持public properties。因此,如果我将我的模型对象更改为以下内容,一切正常。
[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; }
}
请注意为每个属性添加了 getter 和 setter。
关于c# - .Net 4.0 上的 ServiceStack.Text JSON 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4668317/