Skip to content

Commit 5aa3edb

Browse files
committed
Json formatting for transcript: omit null objects
1 parent 9bdebb9 commit 5aa3edb

File tree

4 files changed

+35
-8
lines changed

4 files changed

+35
-8
lines changed

Framework/OverwatchTranscript/EventBucketWriter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ private void AddToBuffer(DateTime utc, object payload)
6666
Event = new OverwatchEvent
6767
{
6868
Type = typeName,
69-
Payload = JsonConvert.SerializeObject(payload)
69+
Payload = Json.Serialize(payload)
7070
}
7171
};
7272

@@ -84,7 +84,7 @@ private void BufferToFile(bool emptyBuffer)
8484
using var writer = new StreamWriter(file);
8585
foreach (var entry in buffer)
8686
{
87-
writer.WriteLine(JsonConvert.SerializeObject(entry));
87+
writer.WriteLine(Json.Serialize(entry));
8888
}
8989
log.Debug($"Bucket wrote {buffer.Count} entries to file.");
9090
buffer.Clear();
@@ -94,13 +94,13 @@ private void BufferToFile(bool emptyBuffer)
9494
private void SortFileByTimestamps()
9595
{
9696
var lines = File.ReadAllLines(bucketFile);
97-
var entries = lines.Select(JsonConvert.DeserializeObject<EventBucketEntry>)
97+
var entries = lines.Select(Json.Deserialize<EventBucketEntry>)
9898
.Cast<EventBucketEntry>()
9999
.OrderBy(e => e.Utc)
100100
.ToArray();
101101

102102
File.Delete(bucketFile);
103-
File.WriteAllLines(bucketFile, entries.Select(JsonConvert.SerializeObject));
103+
File.WriteAllLines(bucketFile, entries.Select(e => Json.Serialize(e)));
104104
}
105105
}
106106

Framework/OverwatchTranscript/Json.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using Newtonsoft.Json;
2+
using System.Globalization;
3+
4+
namespace OverwatchTranscript
5+
{
6+
public static class Json
7+
{
8+
private static JsonSerializerSettings settings = new JsonSerializerSettings
9+
{
10+
Formatting = Formatting.None,
11+
NullValueHandling = NullValueHandling.Ignore,
12+
Culture = CultureInfo.InvariantCulture,
13+
DateFormatHandling = DateFormatHandling.IsoDateFormat,
14+
FloatFormatHandling = FloatFormatHandling.Symbol
15+
};
16+
17+
public static string Serialize(object obj, Formatting formatting = Formatting.None)
18+
{
19+
return JsonConvert.SerializeObject(obj, formatting, settings);
20+
}
21+
22+
public static T Deserialize<T>(string json)
23+
{
24+
return JsonConvert.DeserializeObject<T>(json)!;
25+
}
26+
}
27+
}

Framework/OverwatchTranscript/MomentReferenceBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public void Add(OverwatchMoment moment)
132132
{
133133
File.AppendAllLines(filePath, new[]
134134
{
135-
JsonConvert.SerializeObject(moment)
135+
Json.Serialize(moment)
136136
});
137137
});
138138
}

Framework/OverwatchTranscript/TranscriptWriter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public void AddHeader(string key, object value)
4949
CheckClosed();
5050
lock (_lock)
5151
{
52-
header.Add(key, JsonConvert.SerializeObject(value));
52+
header.Add(key, Json.Serialize(value));
5353
}
5454
}
5555

@@ -70,11 +70,11 @@ public void Write(string outputFilename)
7070
var momentReferences = builder.Build(bucketSet.FinalizeBuckets());
7171
var model = CreateModel(momentReferences);
7272

73-
File.WriteAllText(transcriptFile, JsonConvert.SerializeObject(model, Formatting.Indented));
73+
File.WriteAllText(transcriptFile, Json.Serialize(model, Formatting.Indented));
7474

7575
ZipFile.CreateFromDirectory(workingDir, outputFilename);
7676
log.Debug($"Transcript written to {outputFilename}");
77-
log.Debug($"Common header: {JsonConvert.SerializeObject(model.Header.Common, Formatting.Indented)}");
77+
log.Debug($"Common header: {Json.Serialize(model.Header.Common, Formatting.Indented)}");
7878

7979
Directory.Delete(workingDir, true);
8080
log.Debug($"Workdir {workingDir} deleted");

0 commit comments

Comments
 (0)