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, MethodParams 都是无效的。我是否正确使用此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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top