1

JSON.NETでシリアル化する次のオブジェクトがあります(特にこれではありませんが、同様の構造です)。

  1. リクエストの基本クラス

    public class Request
    {
        public string version = "1.0";
        public RequestParams params;
    
        public Request(RequestParams params)
        {
            this.params = params;
        }
    }
    
  2. 基本的なペイロード クラス

    public abstract class RequestParams
    { }
    
  3. ペイロード クラス

    public SampleRequest : RequestParams
    {
        public string someInfo = "param info";
    }
    
  4. 使用法

    new Request(new SampleRequest());
    

リクエストの構造を知っていれば、これで問題ありません。ただし、動的オブジェクトを「params」パラメーターとして定義する必要がある場合があります。つまり、次の形式で JSON を受け取るために、「params」オブジェクトをディクショナリとして (ただし [] なしで) 処理する必要があります。

    {
        "version":"1.0",
        "params":{
            "dynamic":"x",
            ...any number of dynamically added fields
            "dynamic2":"y"
        }
    }

どうすればいいですか?

4

2 に答える 2

2

ディクショナリから情報を取得する基本Requestクラスを作成します。paramsこれが動的リクエスト オブジェクトです。

Requestメンバーではなく、ディクショナリで動作するクラスを継承するクラスを作成します。これらは「既知の」リクエストです。

params.Net のキーワードです。別の変数名の使用を検討してください。

于 2013-11-15T10:40:43.030 に答える
1

あなたは使用することができdynamicますExpandoObject

dynamic parameters = new ExpandoObject();
parameters.Name = "Name";
parameters.Age = 30;
// Adding as much property as you like dynamically

シリアル化後のこれは次のようになります。

{
    'Name': 'Name',
    'Age': 32,
    /* any other dynamic property */
}
于 2013-11-15T10:44:51.637 に答える