【问题标题】:BsonSerializationException occurs if element name ends in a period如果元素名称以句点结尾,则会发生 BsonSerializationException
【发布时间】:2015-12-22 15:02:16
【问题描述】:

我正在编写一个 C# 应用程序,它从 XML 文件中读取数据,将其转换为 JSON,然后上传到 MongoDB。我们的一些标签以句号结尾,如下所示:

<BatteryTest.>GOOD</BatteryTest.>

使用 Newtonsoft 库,我可以毫无问题地将 XML 转换为 JSON。当我将其反序列化为 BsonDocument 时,我遇到了麻烦:

var document = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(jsonText);

我收到以下错误消息:

“MongoDB.Bson.BsonSerializationException”类型的异常发生在 mscorlib.dll 中,但未在用户代码中处理

附加信息:元素名称“电池测试”。无效”。

我查看了the documentation,但没有找到任何可以解释如何更改反序列化程序的格式化属性的内容。这是有效的 XML,所以我也不确定为什么反序列化器会阻塞它。

这是无效的 JSON 吗?如果是这样,有没有办法在不删除该句点的情况下仍将其插入 MongoDB?

【问题讨论】:

    标签: c# json xml mongodb json.net


    【解决方案1】:

    由于点可以在MongoDB中使用queries,它不能用于字段名称。在将 JSON 转换为 BSONDocument 之前,您必须对其进行预处理。

    【讨论】:

    • 当。不是我希望的答案,但它是正确的。谢谢!我会去和开发团队谈谈,看看我们能做些什么。
    • 这是 Mongo 中一个令人难以置信的设计缺陷。怎么回事?严重地?他们是如何设法在这些层面上混淆事物的?任何有效的 JSON 都应该可以保存到数据库中。现在我需要更改我的程序以适应 Mongo 的怪癖......
    猜你喜欢
    • 2019-01-02
    • 2011-03-18
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多