【问题标题】:Convert Dataset with Relation to JSON string将具有关系的数据集转换为 JSON 字符串
【发布时间】:2011-10-27 14:21:54
【问题描述】:

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

这是我的数据集序列化器代码,我怎样才能使表格嵌套(就像在 asp.net 的嵌套中继器中一样?)

谢谢,

维他命

    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;
    }

【问题讨论】:

    标签: json


    【解决方案1】:

    我的解决方案是: 将数据集转换为 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;
    

    它完美地工作。 有人有更有效的解决方案吗?

    【讨论】:

      猜你喜欢
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-08
      相关资源
      最近更新 更多