Монго C # драйвер словаря сериализации - PullRequest
0 голосов
/ 12 марта 2012

Я пытаюсь настроить сериализацию документов в моем приложении.Проблема в том, что у сериализующего объекта есть словарь с пользовательскими данными, и иногда ключи в словаре выглядят как «Test.0» или «Test_0».

Если в словаре есть ключ «Test_0» - словарь будет сериализован как BsonDocument.Если в словаре есть ключ «Test.0», то, как я понимаю, результатом будет BsonArray.

Ожидаемое поведение?

Я пытался найти какую-то документацию - ничего не найдено.

Несколько тестовых примеров иллюстрируют проблему (добавлен Newtonsoft.Json просто для сравнения поведения)

[TestFixture]
public class BsonDocumentWrapperTests
{
    [Test]
    public void Test_WithoutDot()
    {
        var value = new Dictionary<string, object>();
        value.Add("test0", "test0");

        var result = BsonDocumentWrapper.Create(value);
        Assert.AreEqual("{ \"test0\" : \"test0\" }", result.ToJson());
    }


    [Test]
    public void Test_WithDot()
    {
        var value = new Dictionary<string, object>();
        value.Add("test.0", "test0");

        var result = BsonDocumentWrapper.Create(value);
        Assert.AreEqual("{ \"test.0\" : \"test0\" }", result.ToJson());
    }

    [Test]
    public void Test_WithDot_JsonNet()
    {
        var value = new Dictionary<string, object>();
        value.Add("test.0", "test0");

        var result = JsonConvert.SerializeObject(value);
        Assert.AreEqual("{\"test.0\":\"test0\"}", result);
    }
}
...