Tweaks for JSON loading, minor refactor of unit tests
This commit is contained in:
@@ -15,17 +15,15 @@ public static class AbilityDataLoader
|
||||
{
|
||||
private static Dictionary<string, SerializedAbility> LoadAbilitiesData(Stream stream)
|
||||
{
|
||||
var obj = JsonSerializer.Deserialize<JsonObject>(stream);
|
||||
var obj = JsonSerializer.Deserialize<JsonObject>(stream, JsonOptions.DefaultOptions);
|
||||
if (obj == null)
|
||||
throw new InvalidDataException("Ability data is empty.");
|
||||
obj.Remove("$schema");
|
||||
var cleanedString = obj.ToJsonString();
|
||||
|
||||
var objects = JsonSerializer.Deserialize<Dictionary<string, SerializedAbility>>(cleanedString,
|
||||
new JsonSerializerOptions()
|
||||
{
|
||||
PropertyNameCaseInsensitive = true,
|
||||
});
|
||||
var objects =
|
||||
JsonSerializer.Deserialize<Dictionary<string, SerializedAbility>>(cleanedString,
|
||||
JsonOptions.DefaultOptions);
|
||||
if (objects == null)
|
||||
throw new InvalidDataException("Ability data is empty.");
|
||||
return objects;
|
||||
|
||||
@@ -10,7 +10,7 @@ public static class GrowthRateDataLoader
|
||||
{
|
||||
public static GrowthRateLibrary LoadGrowthRates(Stream stream)
|
||||
{
|
||||
var objects = JsonSerializer.Deserialize<Dictionary<string, uint[]>>(stream)!;
|
||||
var objects = JsonSerializer.Deserialize<Dictionary<string, uint[]>>(stream, JsonOptions.DefaultOptions)!;
|
||||
var library = new GrowthRateLibrary();
|
||||
foreach (var (key, value) in objects)
|
||||
{
|
||||
|
||||
@@ -17,10 +17,7 @@ public static class ItemDataLoader
|
||||
public static ItemLibrary LoadItems(Stream stream)
|
||||
{
|
||||
var library = new ItemLibrary();
|
||||
var obj = JsonSerializer.Deserialize<SerializedItem[]>(stream, new JsonSerializerOptions()
|
||||
{
|
||||
PropertyNameCaseInsensitive = true,
|
||||
});
|
||||
var obj = JsonSerializer.Deserialize<SerializedItem[]>(stream, JsonOptions.DefaultOptions);
|
||||
if (obj == null)
|
||||
throw new InvalidDataException("Item data is empty.");
|
||||
var items = obj.Select(DeserializeItem);
|
||||
|
||||
13
PkmnLib.Dataloader/JsonOptions.cs
Normal file
13
PkmnLib.Dataloader/JsonOptions.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System.Text.Json;
|
||||
|
||||
namespace PkmnLib.Dataloader;
|
||||
|
||||
internal static class JsonOptions
|
||||
{
|
||||
public static JsonSerializerOptions DefaultOptions => new JsonSerializerOptions()
|
||||
{
|
||||
PropertyNameCaseInsensitive = true,
|
||||
AllowTrailingCommas = true,
|
||||
ReadCommentHandling = JsonCommentHandling.Skip,
|
||||
};
|
||||
}
|
||||
@@ -17,11 +17,7 @@ public static class MoveDataLoader
|
||||
public static MoveLibrary LoadMoves(Stream stream, TypeLibrary typeLibrary)
|
||||
{
|
||||
var library = new MoveLibrary();
|
||||
var objects = JsonSerializer.Deserialize<SerializedMoveDataWrapper>(stream,
|
||||
new JsonSerializerOptions()
|
||||
{
|
||||
PropertyNameCaseInsensitive = true,
|
||||
});
|
||||
var objects = JsonSerializer.Deserialize<SerializedMoveDataWrapper>(stream, JsonOptions.DefaultOptions);
|
||||
if (objects == null)
|
||||
throw new InvalidDataException("Move data is empty.");
|
||||
var moves = objects.Data.Select(x => DeserializeMove(x, typeLibrary));
|
||||
|
||||
@@ -17,15 +17,11 @@ public static class SpeciesDataLoader
|
||||
{
|
||||
private static Dictionary<string, SerializedSpecies> LoadSpeciesData(Stream stream)
|
||||
{
|
||||
var obj = JsonSerializer.Deserialize<JsonObject>(stream);
|
||||
var obj = JsonSerializer.Deserialize<JsonObject>(stream, JsonOptions.DefaultOptions);
|
||||
if (obj == null)
|
||||
throw new InvalidDataException("Species data is empty.");
|
||||
var jsonConfig = new JsonSerializerOptions()
|
||||
{
|
||||
PropertyNameCaseInsensitive = true,
|
||||
};
|
||||
return obj.Where(x => x.Key != "$schema")
|
||||
.ToDictionary(x => x.Key, x => x.Value.Deserialize<SerializedSpecies>(jsonConfig));
|
||||
.ToDictionary(x => x.Key, x => x.Value.Deserialize<SerializedSpecies>(JsonOptions.DefaultOptions));
|
||||
}
|
||||
|
||||
public static SpeciesLibrary LoadSpecies(Stream[] streams, IReadOnlyTypeLibrary typeLibrary)
|
||||
|
||||
Reference in New Issue
Block a user