2011-10-27 8 views
1

データセットとテーブルの関係をJSON文字列に変換する方法を探しています。関連するデータセットを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; 
    } 

答えて

2

私の解決策は: データセットをXmlDocumentに変換し、関数呼び出しはXmlDocumentからJson Stringへのシリアル化を行います。 私はサイトでJSONライブラリでこの機能を見つけました:それは完璧に動作

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

....のDataTableとの関係でデータセットを埋める...

DataSet resultSet = new DataSet("Table"); 

http://json.codeplex.com/releases/view/74287

私のコード。 誰かがより効率的なソリューションを持っていますか?

+0

私はこれを試しましたが動作しませんでした。 –

関連する問題