Skip to content

Commit

Permalink
Minor improvements to JSON class
Browse files Browse the repository at this point in the history
- removed uncessary allocation of serializer settings for every method call
- fixed "z" spelling for serialize and deserialize
- added a deserialize from string method
- added an internal serialize to string stub for future anticipated needs
  • Loading branch information
atruskie committed Jul 23, 2018
1 parent 9d82831 commit 565a59a
Show file tree
Hide file tree
Showing 12 changed files with 47 additions and 36 deletions.
45 changes: 28 additions & 17 deletions src/Acoustics.Shared/Json.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,55 +14,66 @@ namespace Acoustics.Shared

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

using Zio;

public static class Json
{
public static void Serialise<T>(FileInfo file, T obj)
static Json()
{
var serializer = new JsonSerializer();
serializer.Formatting = Formatting.Indented;
Serializer = new JsonSerializer()
{
Formatting = Formatting.Indented,
};
}

public static JsonSerializer Serializer { get; }

public static void Serialise<T>(FileInfo file, T obj)
{
using (var stream = file.CreateText())
using (var writer = new JsonTextWriter(stream))
{
serializer.Serialize(writer, obj);
Serializer.Serialize(writer, obj);
}
}

public static void Serialise<T>(TextWriter stream, T obj)
{
var serializer = new JsonSerializer();
serializer.Formatting = Formatting.Indented;

using (var writer = new JsonTextWriter(stream))
{
serializer.Serialize(writer, obj);
Serializer.Serialize(writer, obj);
}
}

public static string SerialiseToString<T>(T obj, bool prettyPrint = true)
public static string SerializeToString<T>(T obj, bool prettyPrint = true)
{
return JsonConvert.SerializeObject(obj, prettyPrint ? Formatting.Indented : Formatting.None);
return SerializeToString(obj, prettyPrint, null);
}

public static T Deserialise<T>(FileInfo file)
public static T Deserialize<T>(FileInfo file)
{
return Deserialise<T>(file.ToFileEntry());
return Deserialize<T>(file.ToFileEntry());
}

public static T Deserialise<T>(FileEntry file)
public static T Deserialize<T>(FileEntry file)
{
var serializer = new JsonSerializer();

using (var stream = file.OpenText())
using (var reader = new JsonTextReader(stream))
{
return serializer.Deserialize<T>(reader);
return Serializer.Deserialize<T>(reader);
}
}

public static T DeserializeFromString<T>(string json)
{
return JsonConvert.DeserializeObject<T>(json);
}

internal static string SerializeToString<T>(T obj, bool prettyPrint, JsonSerializerSettings settings)
{
return JsonConvert.SerializeObject(obj, prettyPrint ? Formatting.Indented : Formatting.None, settings);
}

public class LegacyTimeSpanDataConverter : JsonConverter
{
public override bool CanWrite => false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ public RemoteSegmentWithData(AudioRecording source, Range<double> offsets, IList

public override string ToString()
{
return "[RemoteSegmentWithData: " + Json.SerialiseToString(this) + "]";
return "[RemoteSegmentWithData: " + Json.SerializeToString(this) + "]";
}
}
}
2 changes: 1 addition & 1 deletion src/AnalysisPrograms/Audio2InputForConvCNN.cs
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ public static void Execute(Arguments arguments)

var result = AnalyseOneRecording(arguments.Source, configDict, localEventStart, localEventEnd, (int)minHz, (int)mazHz, arguments.Output);
Log.InfoFormat("SpectrogramPath:" + result.SpectrogramFile);
Log.InfoFormat("SnrStats:" + Json.SerialiseToString(result.SnrStatistics, prettyPrint: false));
Log.InfoFormat("SnrStats:" + Json.SerializeToString(result.SnrStatistics, prettyPrint: false));
}

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion src/AnalysisPrograms/DrawLongDurationSpectrograms.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ public static void Execute(Arguments arguments)
(FileEntry indexGenerationDataFile, FileEntry indexDistributionsFile) =
ZoomParameters.CheckNeededFilesExist(arguments.InputDataDirectory.ToDirectoryEntry());

var indexGenerationData = Json.Deserialise<IndexGenerationData>(indexGenerationDataFile);
var indexGenerationData = Json.Deserialize<IndexGenerationData>(indexGenerationDataFile);

// spectral distribution statistics is required only when calcualting difference spectrograms.
Dictionary<string, IndexDistributions.SpectralStats> indexDistributionsData = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ public static async Task<int> ExecuteAsync(Arguments arguments)
durationAudioProcessed = results.Sum(x => x.SegmentAudioDuration.TotalSeconds),
remoteAudioDownloaded = (preparer as RemoteSourcePreparer)?.TotalBytesRecieved,
};
Log.Info("Summary statistics:\n" + Json.SerialiseToString(summaryStats));
Log.Info("Summary statistics:\n" + Json.SerializeToString(summaryStats));

Log.Success("Event statistics analysis complete!");

Expand Down
2 changes: 1 addition & 1 deletion src/AnalysisPrograms/EventStatistics/ImportedEvent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public bool IsValid()
/// <returns>The string that describes this object.</returns>
public override string ToString()
{
return Json.SerialiseToString(this);
return Json.SerializeToString(this);
}

public sealed class ImportedEventNameClassMap : CsvClassMap<ImportedEvent>
Expand Down
2 changes: 1 addition & 1 deletion src/AnalysisPrograms/Production/MainEntryUtilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ private static void LogProgramStats()
PeakWorkingSet = thisProcess.PeakWorkingSet64,
};

var statsString = "Programs stats:\n" + Json.SerialiseToString(stats, prettyPrint: true);
var statsString = "Programs stats:\n" + Json.SerializeToString(stats, prettyPrint: true);

NoConsole.Log.Info(statsString);
}
Expand Down
2 changes: 1 addition & 1 deletion src/AudioAnalysisTools/Indices/IndexDistributions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ public static Dictionary<string, SpectralStats> Deserialize(FileInfo file)

public static Dictionary<string, SpectralStats> Deserialize(FileEntry file)
{
return Json.Deserialise<Dictionary<string, SpectralStats>>(file);
return Json.Deserialize<Dictionary<string, SpectralStats>>(file);
}
}
}
2 changes: 1 addition & 1 deletion src/AudioAnalysisTools/Indices/IndexGenerationData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public IndexGenerationData()
/// </summary>
public static IndexGenerationData GetIndexGenerationData(DirectoryEntry directory)
{
return Json.Deserialise<IndexGenerationData>(FindFile(directory));
return Json.Deserialize<IndexGenerationData>(FindFile(directory));
}

public static FileEntry FindFile(DirectoryEntry directory)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public ZoomParameters(DirectoryEntry inputDirectory, FileEntry config, bool omit
// get the indexDistributions and the indexGenerationData AND the common.OriginalBasename
var paths = CheckNeededFilesExist(inputDirectory);

this.IndexGenerationData = Json.Deserialise<IndexGenerationData>(paths.indexGenerationDataFile);
this.IndexGenerationData = Json.Deserialize<IndexGenerationData>(paths.indexGenerationDataFile);
this.IndexDistributions = Indices.IndexDistributions.Deserialize(paths.indexDistributionsFile);

// double check file format matches what we expect
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ public void TestAnalyzeSr22050Recording()
var ldsBgnSpectrumFile = this.outputDirectory.CombineFile("Spectrum1.png");
GraphsAndCharts.DrawGraph(array, "LD BGN SPECTRUM Linear", ldsBgnSpectrumFile);

var generationData = Json.Deserialise<IndexGenerationData>(IndexGenerationData.FindFile(resultsDirectory.ToDirectoryEntry()));
var generationData = Json.Deserialize<IndexGenerationData>(IndexGenerationData.FindFile(resultsDirectory.ToDirectoryEntry()));
Assert.AreEqual("TemporaryRecording1", generationData.RecordingBasename);
}

Expand Down Expand Up @@ -243,7 +243,7 @@ public void TestAnalyzeSr64000Recording()
// SECOND part of test is to create the LD spectrograms because they are not created when IndexCalcDuration < 60 seconds
// first read in the index generation data
var icdPath = resultsDirectory.CombineFile(recordingName + "__IndexGenerationData.json");
var indexConfigData = Json.Deserialise<IndexGenerationData>(icdPath);
var indexConfigData = Json.Deserialize<IndexGenerationData>(icdPath);

var indexPropertiesConfig = PathHelper.ResolveConfigFile("IndexPropertiesConfig.yml");

Expand Down
16 changes: 8 additions & 8 deletions tests/Acoustics.Test/Shared/CsvTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,9 @@ public void TestWriteAndReadSimpleMatrix()

double[,] matrix = Csv.ReadMatrixFromCsv<double>(this.testFile, TwoDimensionalArray.None);

Debug.WriteLine(Json.SerialiseToString(TestMatrix, prettyPrint: true));
Debug.WriteLine(Json.SerializeToString(TestMatrix, prettyPrint: true));
Debug.WriteLine("Actual:");
Debug.WriteLine(Json.SerialiseToString(matrix, true));
Debug.WriteLine(Json.SerializeToString(matrix, true));

CollectionAssert.AreEqual(TestMatrix, matrix);
}
Expand All @@ -162,9 +162,9 @@ public void TestWriteAndReadSimpleMatrix90Clockwise()

double[,] matrix = Csv.ReadMatrixFromCsv<double>(this.testFile, TwoDimensionalArray.Rotate90AntiClockWise);

Debug.WriteLine(Json.SerialiseToString(TestMatrix, prettyPrint: true));
Debug.WriteLine(Json.SerializeToString(TestMatrix, prettyPrint: true));
Debug.WriteLine("Actual:");
Debug.WriteLine(Json.SerialiseToString(matrix, true));
Debug.WriteLine(Json.SerializeToString(matrix, true));

CollectionAssert.AreEqual(TestMatrix, matrix);
}
Expand All @@ -176,9 +176,9 @@ public void TestWriteAndReadSimpleMatrix90AntiClockwise()

double[,] matrix = Csv.ReadMatrixFromCsv<double>(this.testFile, TwoDimensionalArray.Rotate90ClockWise);

Debug.WriteLine(Json.SerialiseToString(TestMatrix, prettyPrint: true));
Debug.WriteLine(Json.SerializeToString(TestMatrix, prettyPrint: true));
Debug.WriteLine("Actual:");
Debug.WriteLine(Json.SerialiseToString(matrix, true));
Debug.WriteLine(Json.SerializeToString(matrix, true));

CollectionAssert.AreEqual(TestMatrix, matrix);
}
Expand All @@ -190,9 +190,9 @@ public void TestWriteAndThenReadDifferentOrders()

double[,] matrix = Csv.ReadMatrixFromCsv<double>(this.testFile, TwoDimensionalArray.None);

Debug.WriteLine(Json.SerialiseToString(TestMatrix, prettyPrint: true));
Debug.WriteLine(Json.SerializeToString(TestMatrix, prettyPrint: true));
Debug.WriteLine("Actual:");
Debug.WriteLine(Json.SerialiseToString(matrix, true));
Debug.WriteLine(Json.SerializeToString(matrix, true));

matrix = MatrixTools.MatrixRotate90Anticlockwise(matrix);

Expand Down

0 comments on commit 565a59a

Please sign in to comment.