C # MongoDB: анализ строки Json - PullRequest
       10

C # MongoDB: анализ строки Json

0 голосов
/ 29 сентября 2018

Допустим, у меня есть большой файл JSON для анализа, и я хочу десериализовать его в BsonDocument.

Допустим, я хочу получить файл JSON из API погоды Yahoo .

Вот мой код:

var weatherAPI_collection = database.GetCollection<BsonDocument>("weather_API");
string json_data = webClient.DownloadString(URL);
using (var json_reader = new JsonReader(json_data))
{
    var serializer = new BsonArraySerializer();
    BsonArray bsonArray = serializer.Deserialize(BsonDeserializationContext.CreateRoot(json_reader));
    foreach (BsonValue value in bsonArray)
    {
        Console.WriteLine(value.AsBsonDocument);
        weatherAPI_collection.InsertOne(value.AsBsonDocument);
    }
}

Но я получил ошибку вроде:

'JSON reader was expecting ':' but found '":"'.'

Что мне делать?Какую ошибку я совершил?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Пожалуйста, измените ваш код, как показано ниже:

var weatherAPI_collection = database.GetCollection<BsonDocument>("weather_API");
string json_data = webClient.DownloadString(URL);

var docs = BsonSerializer.Deserialize<List<BsonDocument>>(json_data);
weatherAPI_collection.InsertMany(docs);

Десериализация в списке зависит от ваших данных json, если данные json в массиве, тогда используйте список, иначе вы можете сделать как

var weatherAPI_collection = database.GetCollection<BsonDocument>("weather_API");
string json_data = webClient.DownloadString(URL);

var docs = BsonSerializer.Deserialize<BsonDocument>(json_data);
weatherAPI_collection.InsertOne(docs);

Вваш код, который вы пытаетесь преобразовать в BsonValue, представляющий поле в одном BsonDocument

0 голосов
/ 29 сентября 2018

Если все, что вы хотите сделать, это записать полученный документ в вашу коллекцию MongoDB, то вот путь:

string json_data = new WebClient().DownloadString(URL);
weatherAPI_collection.InsertOne(BsonDocument.Parse(json_data));
...