如何在C#中解析JSON数组?

5
使用MongoDB C#驱动程序,如何将JSON数组(字符串)解析为BsonDocument []?我们希望将mongo聚合管道存储在单独的JSON文档中,因此需要一种解析它们的方法。
2个回答

10

如果符合您的需求,这不是个坏主意。是的,C#驱动程序已经支持从JSON字符串源进行BSON序列化:

string json = '[
    { "$match: { "foo": "bar" } },
    { "$group": {
        "_id": null, 
        "count": { "$sum": 1 }
    }}
]';

BsonDocument pipeline = 
    MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonArray>(json);

因此,您可以将格式为JSON的聚合管道字符串拉取并将其用作BSON文档进行操作。


2
哪个版本的驱动程序?使用2.x C#驱动程序时,这段代码在我的电脑上无法编译。它说无法将BsonArray隐式转换为BsonDocument。显式转换也不被允许。 - Richard II

8
被接受的答案返回了一个BsonArray结果,如果你需要一个BsonDocument[],你可以像这样做:
BsonSerializer.Deserialize<BsonArray>(yourJsonString).Select(p => p.AsBsonDocument)

如果您需要将其作为List<BsonDocument>使用

BsonSerializer.Deserialize<BsonArray>(yourJsonString).Select(p => p.AsBsonDocument).ToList<BsonDocument>()

2
这应该是正确的答案。第一个返回一个 BsonArray,而这个返回的是所要求的 BsonDocument 集合。 - Eduardo Pignatelli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接