2011-01-12 35 views
3

^h傢伙, 我試圖使用ServiceStack.Text的JSON解析(好像比JSON.Net要更好地執行各種基準,我所看到的)。但我沒有得到我期待的結果。我試圖反序列化類看起來是這樣的:ServiceStack.Text JSON解析在.NET 4.0

[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,MethodParams都是空的。我是否正確使用此API?

回答

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; } 
} 

請注意爲每個屬性添加getter和setter。

2

我想你想JsonSerializer而不是TypeSerializer

TypeSerializer是一種新發明的JSV格式,在他的博客在這裏Mythz先生細節:http://www.servicestack.net/mythz_blog/?p=176

+0

你說得很對,我確實想要JsonSerializer。 TypeSerializer不會生成有效的JSON。然而,這不是我的問題的原因 – Ceilingfish 2011-03-31 16:51:52