我正在寻找将其表与表之间的关系转换为JSON字符串的方法。
这是我的数据集序列化程序的代码,如何使表嵌套(比如在asp.net的嵌套reapeter中?)
感谢,
Avital
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;
}
答案 0 :(得分:3)
我的解决方案是: 将数据集转换为XmlDocument并调用函数tha将XmlDocument序列化为Json String。 我在网站的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;
完美无缺。 任何人都有更有效的解决方案吗?