Я использую Jsonconverter для сериализации и десериализации набора данных. Все работает нормально, за исключением случая, когда одна из таблиц имеет нулевой столбец uniqueidentifier. Так что если я сделать мой набор данных, какОшибка при использовании json.net JsonConverter для сериализации/derserialize набора данных
var set = new DataSet();
var adapter = newSqlDataAdapter();
adapter.SelectCommand = new SqlCommand("Select * from mytable");
adapter.Fill(set);
где туЬаЫе имеет обнуляемого столбец uniqueidentifer и первые несколько значений равны нулю, а затем сериализации
MemoryStream ms = new MemoryStream();
using (BsonWriter bw = new BsonWriter(ms))
{
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(bw, set);
}
string bson = Convert.ToBase64String(ms.ToArray());
где BSON является строковое представление набора данных, все похоже, отлично работает. Но когда я пытаюсь deserialze множества
byte[] data = Convert.FromBase64String(bson);
MemoryStream ms2 = new MemoryStream(data);
using (BsonReader reader = new BsonReader(ms2))
{
reader.ReadRootValueAsArray = false;
JsonSerializer serializer = new JsonSerializer();
DataSet set2 = serializer.Deserialize<DataSet>(reader);
}
Он бросает исключение первый раз, когда он пытается записать значение, где остальные значения равны нулю. Сообщение об исключениях - это значение преобразования ошибки a6934b26-3757-469a-9735-41558e4c0985 для ввода «System.String». Path '[13] .MyNullableGuidColumn'.
Как работа вокруг, я перебирал таблицу, меняя нули на guid.empty, но это не похоже на лучший ответ.
Значит ли кто-нибудь знает, как сделать десериализацию работать и оставить нули равными нулю?
Возможно, связанный с: http://stackoverflow.com/questions/32726718/deserialize -a-datatable-with-a-missing-first-column – dbc