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: * For mod authors:
* Improved SMAPI's crossplatform read/writing of `Color`, `Point`, `Rectangle`, and `Vector2` in JSON to support nullable fields too. * 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 ## 3.12.6
Released 03 September 2021 for Stardew Valley 1.5.4 or later. Released 03 September 2021 for Stardew Valley 1.5.4 or later.

View File

@ -90,13 +90,16 @@ namespace StardewModdingAPI.Web.Controllers
// parse JSON // parse JSON
JToken parsed; JToken parsed;
try
{ {
parsed = JToken.Parse(file.Content, new JsonLoadSettings // load raw JSON
var settings = new JsonLoadSettings
{ {
DuplicatePropertyNameHandling = DuplicatePropertyNameHandling.Error, DuplicatePropertyNameHandling = DuplicatePropertyNameHandling.Error,
CommentHandling = CommentHandling.Load CommentHandling = CommentHandling.Load
}); };
try
{
parsed = JToken.Parse(file.Content, settings);
} }
catch (JsonReaderException ex) catch (JsonReaderException ex)
{ {
@ -104,7 +107,10 @@ namespace StardewModdingAPI.Web.Controllers
} }
// format JSON // format JSON
result.SetContent(parsed.ToString(Formatting.Indented), expiry: file.Expiry, uploadWarning: file.Warning); 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 // skip if no schema selected
if (schemaName == "none") if (schemaName == "none")