2014-04-11 25 views
0

我JSON的格式如下:C#需要反序列化JSON动态绑定到ListView的

{ 
    "fields": 
    [ 
     "field_a", 
     "field_b" 
    ], 
    "records": 
    [ 
     [ 
      1203, 
      169 
     ], 
     [ 
      983, 
      147 
     ] 
    ] 
} 

,我需要反序列化,并绑定到ASP.NET的ListView,其中“领域”成为列标题,'记录'成为数据行。

在这种情况下,我想有一个表:

field_a | field_b 
----------------- 
1203 | 169 
983  | 147 

我目前使用Newtonsoft JSON库反序列化,但无法弄清楚如何领域的动态数映射到C#对象最终绑定到Web控件。

回答

0

我想你几乎在你的问题中使用关键字。动态宝贝。这里是一个让你开始的例子。

var text = "{\"fields\": [\"field_a\",\"field_b\"],\"records\": [[1203,169],[983,147]]}"; 
dynamic result = JsonConvert.DeserializeObject(text); 
var fields = result.fields; 
var records = result.records; 
var columnList = new List<Column>(); 

for (var x = 0; x < fields.Count; x++) 
{ 
    var field = fields[x]; 
    var col = new Column() {Title = field.Value}; 
    columnList.Add(col); 
    var record = records[x]; 
    for (var y = 0; y < record.Count; y++) 
    { 
     var value = record[y]; 
     var cell = new Cell() {Value = (int)value.Value}; 
     col.Cells.Add(cell); 
    } 
} 

和类以匹配:

public class Column 
{ 
    public Column() 
    { 
     Cells = new List<Cell>(); 
    } 
    public string Title { get; set; } 
    public List<Cell> Cells { get; set; } 
} 

public class Cell 
{ 
    public int Value { get; set; } 
} 

这仅仅是一个例子。我不确定你希望你的课程看起来如何,但这将是一个开始。希望这有助于。