ServiceStack.Text JSON在.NET 4.0上解析
-
10-10-2019 - |
题
h chaps,我正在尝试使用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);
但是,我从该调用中获得了一个实例,该实例没有设置的值。 IE Id
, Method
和 Params
都是无效的。我是否正确使用此API?
解决方案
ServiceStack似乎不支持公共领域,仅支持公共物业。因此,如果我将模型对象更改为以下内容。
[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; }
}
请注意,在每个属性中添加了Getters和Setter。
其他提示
我想你想要 JsonSerializer
代替 TypeSerializer
.
TypeSerializer
Mythz先生在此处详细介绍了一种新型的JSV格式: http://www.servicestack.net/mythz_blog/?p=176
不隶属于 StackOverflow