2012-01-26 26 views
1

JSONオブジェクトをコードビハインドに渡しています(またはしようとしています)。多次元配列を逆シリアル化するJSON.NET?

これは、JSONオブジェクトです:

[ 
    { 
     "testLaag":{ 
      "layer_zindex":1, 
      "layer_type":1, 
      "layer_width":1, 
      "layer_height":1, 
      "layer_offset_left":1, 
      "layer_offset_top":1, 
      "layer_html":1, 
      "layer_fontcolor":1, 
      "layer_fontsize":1, 
      "layer_rotation":1, 
      "layer_color":1, 
      "layer_name":1, 
      "layer_fontFamily":1 
     }, 
     "testLaag2":{ 
      "layer_zindex":2, 
      "layer_type":2, 
      "layer_width":2, 
      "layer_height":2, 
      "layer_offset_left":2, 
      "layer_offset_top":2, 
      "layer_html":2, 
      "layer_fontcolor":2, 
      "layer_fontsize":2, 
      "layer_rotation":2, 
      "layer_color":2, 
      "layer_name":2, 
      "layer_fontFamily":2 
     } 
    } 
] 

背後にあるコードからコード:

string data = "[" + Request.Form["layers"] + "]"; 
JsonSerializerSettings settings = new JsonSerializerSettings(); 
settings.TypeNameHandling = TypeNameHandling.All; 
List<Laag> layers = JsonConvert.DeserializeObject<List<Laag>>(data, settings); 

foreach (Laag laag in layers) 
{ 
    Response.Write(laag.layer_name); 
} 

そして、ここでは、私のクラスである:

public class Laag 
{ 
    public int layer_zindex {get; set;} 
    public int layer_type { get; set; }  
    public double layer_width { get; set; } 
    public double layer_height { get; set; } 
    public double layer_offset_left { get; set; } 
    public double layer_offset_top { get; set; } 
    public string layer_html { get; set; } 
    public string layer_fontcolor { get; set; } 
    public double layer_fontsize { get; set; } 
    public double layer_rotation { get; set; } 
    public string layer_color { get; set; } 
    public string layer_name { get; set; } 
    public string layer_fontFamily { get; set; } 
} 

それが現在私の両方を駆動していますと私の同僚ナッツ。私たちが望むのは、両方の "laag"オブジェクトをListオブジェクトに持たせることだけです。 JSONとプロセスの仕方は、私たちにとっては全く新しいものなので、恐ろしく愚かなことがあるかもしれません。

事前のおかげで、

-Ferdy

答えて

1

public class wrapperOfLaag{ 
    public List<Laag> listLag; 
} 

別のラッパークラスを作成し、

string data = "[" + Request.Form["layers"] + "]"; 
JavaScriptSerializer ser = new JavaScriptSerializer(); 
wrapperOfLaag p = ser.Deserialize<wrapperOfLaag >(data); 
を試してみてください