2

JSON rpc 2.0 リクエストを解析しようとしています。標準はここで定義されています。

クラスを次のように定義しました。

 [DataContract]
     public class JsonRpc2Request
     {
         public string method;
         [DataMember(Name = "params")]
         public object parameters;
         public object id;
     }

次に、次のようにリクエストを解析してみます。

JavaScriptSerializer ser = new JavaScriptSerializer();
var obj = ser.Deserialize<JsonRpc2Request>(Message.Trim());

obj.parametersは常にnullparamsこれは、JSON RPC 仕様どおりの名前のオブジェクトを定義できないためだと思います。(私の試みは[DataMember(Name="params")]装飾を使用しています。

paramsJSON RPC 仕様がc# のキーワードである名前を要求する場合、どのようにパラメーター オブジェクトを設定できますか?

4

2 に答える 2

3

DataContractJsonSerializerを使用できます。

DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(JsonRpc2Request));
MemoryStream stream = new MemoryStream(Encoding.Unicode.GetBytes(Message.Trim()));

var obj = ser.ReadObject(stream);

また、属性で注釈methodを付けたいと思うでしょう。idDataMember

于 2012-10-09T00:51:00.493 に答える
0

Json.Netを使用して、シリアライゼーション/デシリアライゼーション プロセスを完全に制御します。

string json = @"{""method"":""mymethod"",""params"":[1,2],""id"":3}";
var rpcReq = JsonConvert.DeserializeObject<JsonRpc2Request>(json);


public class JsonRpc2Request
{
    [JsonProperty("method")]
    public string Method;

    [JsonProperty("params")]
    public object[] Parameters;

    [JsonProperty("id")]
    public string Id;
}

このステップを完了した後は、次のようなより複雑なケースに対処する必要があります。

 @"{""method"":""mymethod"",""params"":[{""name"":""joe""}],""id"":3}";
于 2012-10-09T08:32:11.567 に答える