diff options
author | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2021-09-13 18:20:36 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2021-09-13 18:20:36 -0400 |
commit | a40ef854f3769a0e5d3c2629de538e272a6fcecf (patch) | |
tree | e225d8bae282816d114db0f060d115f0c61ed640 /src/SMAPI.Web/Controllers/JsonValidatorController.cs | |
parent | 4fccaa35709440f98e275f0da3d2b65204b7d6e2 (diff) | |
download | SMAPI-a40ef854f3769a0e5d3c2629de538e272a6fcecf.tar.gz SMAPI-a40ef854f3769a0e5d3c2629de538e272a6fcecf.tar.bz2 SMAPI-a40ef854f3769a0e5d3c2629de538e272a6fcecf.zip |
fix JSON validator line numbers sometimes incorrect
Diffstat (limited to 'src/SMAPI.Web/Controllers/JsonValidatorController.cs')
-rw-r--r-- | src/SMAPI.Web/Controllers/JsonValidatorController.cs | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/SMAPI.Web/Controllers/JsonValidatorController.cs b/src/SMAPI.Web/Controllers/JsonValidatorController.cs index c77a3036..e06c1236 100644 --- a/src/SMAPI.Web/Controllers/JsonValidatorController.cs +++ b/src/SMAPI.Web/Controllers/JsonValidatorController.cs @@ -90,21 +90,27 @@ namespace StardewModdingAPI.Web.Controllers // parse JSON JToken parsed; - try { - parsed = JToken.Parse(file.Content, new JsonLoadSettings + // load raw JSON + var settings = new JsonLoadSettings { DuplicatePropertyNameHandling = DuplicatePropertyNameHandling.Error, CommentHandling = CommentHandling.Load - }); - } - catch (JsonReaderException ex) - { - return this.View("Index", result.AddErrors(new JsonValidatorErrorModel(ex.LineNumber, ex.Path, ex.Message, ErrorType.None))); - } + }; + try + { + parsed = JToken.Parse(file.Content, settings); + } + catch (JsonReaderException ex) + { + return this.View("Index", result.AddErrors(new JsonValidatorErrorModel(ex.LineNumber, ex.Path, ex.Message, ErrorType.None))); + } - // format JSON - result.SetContent(parsed.ToString(Formatting.Indented), expiry: file.Expiry, uploadWarning: file.Warning); + // format JSON + string formatted = parsed.ToString(Formatting.Indented); + result.SetContent(formatted, expiry: file.Expiry, uploadWarning: file.Warning); + parsed = JToken.Parse(formatted); // update line number references + } // skip if no schema selected if (schemaName == "none") |