fix JSON validator line numbers sometimes incorrect

This commit is contained in:
Jesse Plamondon-Willard 2021-09-13 18:20:36 -04:00
parent 4fccaa3570
commit a40ef854f3
No known key found for this signature in database
GPG Key ID: CF8B1456B3E29F49
2 changed files with 19 additions and 10 deletions

View File

@ -8,6 +8,9 @@
* For mod authors:
* Improved SMAPI's crossplatform read/writing of `Color`, `Point`, `Rectangle`, and `Vector2` in JSON to support nullable fields too.
* For the web UI:
* Fixed JSON validator line numbers sometimes incorrect.
## 3.12.6
Released 03 September 2021 for Stardew Valley 1.5.4 or later.

View File

@ -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")