質問

h chaps、私はjson parsingに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を正しく使用していますか?

役に立ちましたか?

解決

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

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

他のヒント

私はあなたが欲しいと思います JsonSerializer それ以外の TypeSerializer.

TypeSerializer Mythz氏がここで彼のブログで詳述している新しいファングルされたJSV形式です。 http://www.servicestack.net/mythz_blog/?p=176

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top