1

当我尝试序列化我的自定义数据集时出现此错误。我在做什么错,它应该很简单吗?

谢谢

错误序列化“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
4

2 回答 2

1

不可能JavaScriptSerializer在普通的DataSet.


一种方法是将您的转换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”],[“mark”],[“hjhkhkh”],null],“药物”:[[“阿替洛尔”],[“阿莫西林”],null]}

于 2012-08-27T06:28:33.030 回答
-1
DataSet somedataset;
XmlSerializer s = new XmlSerializer(typeof(Dataset));
StringWriter sw = new StringWriter();
s.Serialize(sw, somedataset);
string serialized = sw.ToString();

我知道它的 c#,但它有效。
关于 javascriptserialzer 类,我以前没有使用过,但我认为它与 xmlserializer 有关。

于 2012-08-27T06:13:04.973 回答