1

Json 入力を ac# モデルに変換する方法がわかりません。

コントローラーが取得する Json の例を次に示します。

 [{"name":"StartDate",
   "value":"0",
   "Processors":[[{"processor":{"ProcessorName":"searchAndReplace","ProcessorParameters":[{"ParameterName":"toto"},{"ParameterName":"taa"}]}},
                  {"processor":{"ProcessorName":"searchAndReplace","ProcessorParameters":[{"ParameterName":"toto"},{"ParameterName":"tuuut"}]}}]]},
   {"name":"EndDate","value":"1","Processors":[[]]},
   {"name":"Country","value":"2","Processors":[[]]}]

ここに私のコントローラの署名があります:

public JsonResult SendMapping(List<Mapping> MyMappings)

これは私のクラス「マッピング」です:

public class Mapping
{
    public string Value { get; set; }
    public string Name { get; set; }
    public List<Processor> Processors { get; set; }
}

そして、私の「ProcessorModel」

public enum ProcessorNames { SearchAndReplace }

public class ProcessorModel
{
    public Processor processor;
}

public class Processor
{
    public ProcessorNames ProcessorName;
    public List<Parameter> ProcessorParameters;
}

public class Parameter
{
    public List<string> ParameterName;
}

これまでのところ、すべてのnamevalueを取得できます。最初のProcessorNameも取得できますが、そのパラメーターや他のProcessorNameは取得できません

4

5 に答える 5

1

あなたのjsonの小文字と大文字のプロパティ名に関連する問題があるようです。プロパティ/キー名は、クラスで定義されているものと同じにする必要があります。それを修正し、以下のクラスを使用してシリアル化または脱塩してください。

public class JsonHelper
    {
        /// <summary>
        /// JSON Serialization
        /// </summary>
        public static string JsonSerializer<T>(T t)
        {
            var ser = new DataContractJsonSerializer(typeof(T));
            var ms = new MemoryStream();
            ser.WriteObject(ms, t);
            string jsonString = Encoding.UTF8.GetString(ms.ToArray());
            ms.Close();
            return jsonString;
        }
        /// <summary>
        /// JSON Deserialization
        /// </summary>
        public static T JsonDeserialize<T>(string jsonString)
        {
            var ser = new DataContractJsonSerializer(typeof(T));
            var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
            T obj = (T)ser.ReadObject(ms);
            return obj;
        }
    }
于 2013-09-26T09:58:07.227 に答える