ServiceStack.Text在.Net 4.0上解析JSON

Cei*_*ish 3 c# json servicestack

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;
}
Run Code Online (Sandbox Code Playgroud)

我正在调用这样的解析器

public static class Json
{
    public static T Deserialize<T>(string serialized)
    {
        return TypeSerializer.DeserializeFromString<T>(serialized);
    }
}
...
RpcRequest<Params> myRequeset = Json.Deserialize(packet);
Run Code Online (Sandbox Code Playgroud)

但是我从该调用中获取了一个没有设置值的实例.即Id,Method并且Params均为空.我正确使用此API吗?

Cei*_*ish 9

似乎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; }
}
Run Code Online (Sandbox Code Playgroud)

请注意,为每个属性添加getter和setter.