Быстро узнать, содержит ли элемент данные в формате JSON в C # .Net 6
Каким будет наиболее эффективный способ в C # .Net 6 определить, содержит ли элемент или строка данные в формате JSON. У вас будут миллиарды строк для поиска, и я не знал, использовать ли JSON.Net, System.JSON или выражение регулярного выражения, или другой способ будет наименее затратным с точки зрения вычислений. В идеале это основа для метода .containsJson, который сокращает полностью квалифицированный документ JSON с высокой вероятностью, что это данные в формате JSON.
1 ответ
Из коробки быстрее, чем DataContractJsonSerializer и JavaScriptSerializer. поддерживает десериализацию непосредственно из потока, десериализуйте свой JSON с помощью
StreamReader
чтение строки JSON по частям вместо загрузки всей строки JSON в память.
HttpClient client = new HttpClient();
using (Stream s = client.GetStreamAsync("http://www.test.com/large.json").Result)
using (StreamReader sr = new StreamReader(s))
using (JsonReader reader = new JsonTextReader(sr))
{
JsonSerializer serializer = new JsonSerializer();
// read the json from a stream
// json size doesn't matter because only a small piece is read at a time from the HTTP request
Person p = serializer.Deserialize<Person>(reader);
}
Чтобы поддерживать постоянное быстродействие приложения, важно свести к минимуму время, затрачиваемое платформой .NET на сборку мусора . Выделение слишком большого количества объектов или выделение очень больших объектов может замедлить или даже остановить приложение во время выполнения сборки мусора.
Чтобы свести к минимуму использование памяти и количество выделенных объектов,
Json.NET
поддерживает сериализацию и десериализацию непосредственно в поток. Чтение или запись JSON по частям вместо загрузки всей строки JSON в память особенно важно при работе с документами JSON размером более 85 КБ, чтобы избежать попадания строки JSON в кучу больших объектов.
Пожалуйста, проверьте ссылку ниже, чтобы получить лучшее представление: