2012-08-24 48 views
1

當我嘗試序列化我的自定義數據集時出現此錯誤。 我做錯了什麼,狡猾它應該是簡單的?序列化數據集vb.net錯誤

由於

錯誤 而序列化類型的對象「System.Globalization.CultureInfo」中檢測到循環引用。

Dim serializer As New JavaScriptSerializer() 
      Dim arrayJson As String = serializer.Serialize(makeMYDataSET()) 

    Private Function makeMYDataSET() As DataSet 


     ' Two DataTables. 
     Dim table1 As DataTable = New DataTable("patients") 
     table1.Columns.Add("name") 
     'table1.Columns.Add("id") 
     table1.Rows.Add("sam") 
     table1.Rows.Add("mark") 
     table1.Rows.Add("hjhkhkh") 

     Dim table2 As DataTable = New DataTable("medications") 
     'table2.Columns.Add("id") 
     table2.Columns.Add("medication") 
     table2.Rows.Add("atenolol") 
     table2.Rows.Add("amoxicillin") 

     ' Create a DataSet. Put both tables in it. 
     Dim set1 As DataSet = New DataSet("office") 
     set1.Tables.Add(table1) 
     set1.Tables.Add(table2) 


     Return set1 

    End Function 

回答

1

無法在普通DataSet上使用JavaScriptSerializer


一種方法是將您DataSet爲XML,或更好,將其轉換爲Dictionary第一。

可以使用此方法(例如,從CodeProject):

Function DataSetToJSON(ds As DataSet) As String 
    Dim dict = New Dictionary(Of String, Object) 

    For Each dt As DataTable In ds.Tables 
     Dim arr(dt.Rows.Count) As Object 

     For i = 0 To dt.Rows.Count - 1 
      arr(i) = dt.Rows(i).ItemArray 
     Next 

     dict.Add(dt.TableName, arr) 
    Next 

    Dim json = New JavaScriptSerializer 
    Return json.Serialize(dict) 
End Function 

DataSetToJSON(makeMYDataSET()) 

結果

{ 「患者」:[[「SAM 「],[」 標記 「],[」 hjhkhkh 「],空],」 藥物「:[[ 「阿替洛爾」],[「阿莫西林」],null]}

-1
DataSet somedataset; 
XmlSerializer s = new XmlSerializer(typeof(Dataset)); 
StringWriter sw = new StringWriter(); 
s.Serialize(sw, somedataset); 
string serialized = sw.ToString(); 

其C#我知道,但它的工作原理。
關於javascriptserialzer類,我以前沒有使用它,但我認爲它涉及到xmlserializer。