Newtonsoft.Json.JsonConvert.SerializeObject отсутствует DataSet.DataSetName - PullRequest
0 голосов
/ 18 марта 2019

Кажется, что свойство DataSetName System.Data.DataSet отсутствует при сериализации.Другие вещи, такие как встроенные таблицы и строки, выглядят хорошо.

Ниже приведен модульный тест VB.Net для демонстрации несериализованного свойства и ассортимент правильно сериализованного материала.

    Dim ds = New DataSet, str as String
    Assert.AreEqual("NewDataSet", ds.DataSetName)
    ds.DataSetName = "MyDS"
    Dim dt = New DataTable
    dt.TableName = "MyDT"
    Dim dc = New DataColumn
    dc.ColumnName = "MyDC"
    dc.DataType = GetType(String)
    dt.Columns.Add(dc)
    ds.Tables.Add(dt)
    Dim dr = dt.NewRow
    dr.ItemArray = New Object() {"MyValue"}
    dt.Rows.Add(dr)

    Assert.AreEqual(1, ds.Tables.Count)
    Assert.AreEqual("MyDT", ds.Tables(0).TableName)
    Assert.AreEqual(1, ds.Tables(0).Columns.Count)
    Assert.AreEqual("MyDC", ds.Tables(0).Columns(0).ColumnName)
    Assert.AreEqual(1, ds.Tables(0).Rows.Count)
    Assert.AreEqual("MyValue", ds.Tables(0).Rows(0)(ds.Tables(0).Columns(0)))
    Assert.AreEqual("MyDS", ds.DataSetName)

    str = Newtonsoft.Json.JsonConvert.SerializeObject(ds)
    ds = Newtonsoft.Json.JsonConvert.DeserializeObject(Of DataSet)(str)

    Assert.AreEqual(1, ds.Tables.Count)
    Assert.AreEqual("MyDT", ds.Tables(0).TableName)
    Assert.AreEqual(1, ds.Tables(0).Columns.Count)
    Assert.AreEqual("MyDC", ds.Tables(0).Columns(0).ColumnName)
    Assert.AreEqual(1, ds.Tables(0).Rows.Count)
    Assert.AreEqual("MyValue", ds.Tables(0).Rows(0)(ds.Tables(0).Columns(0)))
    Assert.AreEqual("MyDS", ds.DataSetName, "FAILS - still 'NewDataSet'")

КСТАТИ произведенная сериализованная строка:

{"MyDT": [{"MyDC": "MyValue"}]}

BTW2 версия:

Сборка Newtonsoft.Json, версия = 12.0.0.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...