3

チャップス、私はJSON解析にServiceStack.Textを使用しようとしています(これまでに見たさまざまなベンチマークでは、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);

ただし、値が設定されていないインスタンスをその呼び出しから取得しています。つまり、、IdおよびMethodParamsすべてnullです。このAPIを正しく使用していますか?

4

2 に答える 2

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

各プロパティにゲッターとセッターが追加されていることに注意してください。

于 2011-03-31T16:54:06.400 に答える
2

JsonSerializerの代わりに欲しいと思いますTypeSerializer

TypeSerializerMythz氏がブログで詳しく説明している新しいJSV形式です:http ://www.servicestack.net/mythz_blog/?p = 176

于 2011-01-17T00:13:39.863 に答える