簡體   English   中英

ServiceStack.Text在.Net 4.0上解析JSON

[英]ServiceStack.Text JSON parsing on .Net 4.0

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

但是我從該調用中獲取了一個沒有設置值的實例。 IdMethodParams都為空。 我正確使用此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; }
}

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

我想你想要JsonSerializer而不是TypeSerializer

TypeSerializer是一種新奇的JSV格式,Mythz先生在他的博客上詳細介紹了這些格式: http//www.servicestack.net/mythz_blog/? p = 176

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM