2011-10-27 42 views
1

我正在寻找将dataSet与其表之间的关系转换为JSON字符串的方式。将数据集转换为与JSON字符串的关系

这是我的数据集串行代码,我怎样才能使这些表是嵌套(asp.net中的嵌套reapeter样?)

感谢,

阿维塔尔

public static string DataTableToJSON(DataSet dt) 
    { 
     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     string str = serializer.Serialize(ToDictionary(dt)); 
     return str; 
    } 

    private static object RowsToDictionary(DataTable table) 
    { 
     var columns = table.Columns.Cast<DataColumn>().ToArray(); 
     return table.Rows.Cast<DataRow>().Select(r => columns.ToDictionary(c => c.ColumnName, c => r[c].ToString().Trim().Replace("'", "\'"))); 
    } 

    private static object RowsToDictionary(DataSet table) 
    { 
     return table.Tables.Cast<DataTable>().ToDictionary(t => t.TableName, t => RowsToDictionary(t));  
    } 


    private static Dictionary<string, object> ToDictionary(DataSet table) 
    { 
     Dictionary<string, object> dic = new Dictionary<string, object>();   
     if (table != null) 
      dic.Add(table.DataSetName, RowsToDictionary(table)); 
     return dic; 
    } 

回答

2

我的解决方案是: 将数据集转换为XmlDocument并调用函数将XmlDocument序列化为Json字符串。 我发现JSON库此功能在现场:http://json.codeplex.com/releases/view/74287

我的代码:

DataSet resultSet = new DataSet("Table"); 

..填充数据表和关系数据集....

XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(resultSet.GetXml()); 
    string jsonText = JsonConvert.SerializeXmlNode(doc).Replace("null", "\"\"").Replace("'", "\'"); 
    return jsonText; 

它完美地工作。 任何人都有更高效的解决方案?

+0

我试过但没有工作。 –