У меня огромный JSON-файл (десятки тысяч объектов, файл> 100 МБ), который я пытаюсь проанализировать, чтобы извлечь конкретные объекты.Поскольку файл такой большой, я пытаюсь десериализовать только нужную мне часть (если это возможно) без необходимости десериализации всего файла.
Указанный объект должен быть найден на основе значенияопределенного свойства "arena_id":xxxxx
, содержащегося в каждом объекте, объекты, которые отформатированы следующим образом (урезанная версия):
{"object":"card","id":"61a908e8-6952-46c0-94ec-3962b7a4caef","oracle_id":"e70f5520-1b9c-4351-8484-30f0dc692e01","multiverse_ids":[460007],"mtgo_id":71000,"arena_id":69421}
Для десериализации всего файла я написал следующий код:
public static RootObject GetCardFromBulkScryfall()
{
string s = null;
using (StreamReader streamReader = new StreamReader(Path.Combine(GetAppDataPath(), @"scryfall-default-cards.json")))
{
s = streamReader.ReadToEnd();
}
RootObject card = JsonConvert.DeserializeObject<RootObject>(s);
return card;
}
Я даже не уверен, возможно ли то, что я пытаюсь сделать, но в случае, если это был не мой вопрос, каков наилучший подход к обработке такого большого файла без необходимости десериализации его целиком.