У меня есть файл журнала, который выглядит следующим образом:
2019-12-24 18:00:17.8105|DEBUG|--------------------------------
https://...
2019-12-24 18:00:17.8105|DEBUG|Key: xxxxxxxxxxxxxxxxxxxxxxxx
{
"Id": "xxxxxxx",
"Times": "2019-12-24",
"Data": {
"Id": 8,
"Code": "5",
"Description": "abc",
},
"Number": 1,
...
}
2019-12-24 18:00:17.8105|DEBUG|--------------------------------
https://...
2019-12-24 18:00:17.8105|DEBUG|Key: xxxxxxxxxxxxxxxxxxxxxxxx
{
"Id": "xxxxxxx",
"Times": "2019-12-24",
"Data": {
"Id": 6,
"Code": "3",
"Description": "def"
},
"Number": 3,
...
}
//...and it repeats several times in this file with diferent data
Моя цель - получить только часть внутри "{...}", добавить ее в массив объектов и быть похожей на
Array:
[
{"Id": "xxxxxxx", "Times": "2019-12-24", "Data": { "Id": 8, "Code": "5", "Description": "abc"}}
{"Id": "xxxxxxx", "Time": "2019-12-24", "Data": { "Id": 6, "Code": "3", "Description": "def"}}
]
Что у меня есть:
Я знаю, что могу использовать объект File
для чтения файла, поэтому в моем index.cs html я положил:
@{
var result = "";
Array log = null;
var dataFile = Server.UrlPathEncode("C:/Temp/test.log");
if (File.Exists(dataFile))
{
log = File.ReadAllLines(dataFile);
if (log == null)
{
result = "The file is empty.";
}
}
else
{
result = "The file does not exist.";
}
}
но я понятия не имею, как просто получить то, что находится внутри фигурных скобок, и преобразовать в объект
Примечания :
- I Я использую APS. NET mvc.
- Я предпочитаю использовать регулярные выражения, если это возможно
- Данные являются динамическими c, они могут изменяться в файле
ОБНОВЛЕНИЕ:
, чтобы получить часть файла .log, который я сделал:
foreach (var item in log)
{
text += item;
}
Regex regex = new Regex(@"(?={)[^}]*(?=})", RegexOptions.IgnoreCase);
matches = regex.Matches(text);
но это регулярное выражение не получает все, что я хочу, оно просто получает до "Description": "abc",}
и я хочу получить также "Number": ...
Я использовал эту ссылку для текстового регулярного выражения
кто-то может помочь с регулярным выражением?