CommunityToolkit / CommunityToolkit/ColorCode-Universal

JSON Parsing - deadlock/stuck on parsing Json to HTML

オープン
#36 コメント 6 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
C#
スター
265
フォーク
57
PR マージ指標
30日以内にマージされた PR はありません

説明

Im trying to parse this JSON sipped to my Blazor page. But because of some weird RegEx parsing issue the process get stuck without any Exception. Can somebody tell me where there could be a Problem?
here you can find my test project: [ColorCodeTest](https://github.com/JochnGst/ColorCodeTest)

This is my Test Code
```csharp
string _jsonString3 = "{\r\n \"raw_causes\": [\r\n \"Winterglatter Fahrbahn\",\r\n \"Nicht angepasste Geschwindigkeit\",\r\n \"test3\"\r\n ]\r\n }";
try
{
var _formatter = new HtmlFormatter();
var language = ColorCode.Languages.FindById("json");
_jsonHtml = _formatter.GetHtmlString(_jsonString3, language);

}
catch (Exception)
{

throw;
}
```

It stuck after the array Element `\"Winterglatter Fahrbahn\",` when it call `regexMatch = regexMatch.NextMatch();` and I have no idear why this happends
```csharp
private void Parse(string sourceCode,
CompiledLanguage compiledLanguage,
Action> parseHandler)
{
Match regexMatch = compiledLanguage.Regex.Match(sourceCode);

if (!regexMatch.Success)
parseHandler(sourceCode, new List());
else
{
int currentIndex = 0;

try
{
while (regexMatch.Success)
{
string sourceCodeBeforeMatch = sourceCode.Substring(currentIndex, regexMatch.Index - currentIndex);
if (!string.IsNullOrEmpty(sourceCodeBeforeMatch))
parseHandler(sourceCodeBeforeMatch, new List());

string matchedSourceCode = sourceCode.Substring(regexMatch.Index, regexMatch.Length);
if (!string.IsNullOrEmpty(matchedSourceCode))
{
List capturedStylesForMatchedFragment = GetCapturedStyles(regexMatch, regexMatch.Index, compiledLanguage);
List capturedStyleTree = CreateCapturedStyleTree(capturedStylesForMatchedFragment);
parseHandler(matchedSourceCode, capturedStyleTree);
}

currentIndex = regexMatch.Index + regexMatch.Length;
regexMatch = regexMatch.NextMatch();
}
}
catch (Exception ex)
{

throw;
}

string sourceCodeAfterAllMatches = sourceCode.Substring(currentIndex);
if (!string.IsNullOrEmpty(sourceCodeAfterAllMatches))
parseHandler(sourceCodeAfterAllMatches, new List());
}
}

```

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。