Skip to content

Commit 5b2720e

Browse files
committed
refactor: improve JSON serialization logic for ExtractedPackageModel
- Replaced generic deserialization approach with explicit property handling for increased control and error safety. - Updated serialization to write individual properties, ensuring consistent output format.
1 parent 61b28fd commit 5b2720e

File tree

1 file changed

+30
-8
lines changed

1 file changed

+30
-8
lines changed

EasyExtractUnitypackageRework/EasyExtractCrossPlatform/Services/AppSettingsService.cs

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -223,22 +223,44 @@ private class ExtractedPackageModelConverter : JsonConverter<ExtractedPackageMod
223223
}
224224

225225
if (reader.TokenType == JsonTokenType.StartObject)
226-
try
227-
{
228-
using var doc = JsonDocument.ParseValue(ref reader);
229-
return JsonSerializer.Deserialize<ExtractedPackageModel>(doc.RootElement.GetRawText(), options);
230-
}
231-
catch
226+
{
227+
var model = new ExtractedPackageModel();
228+
while (reader.Read())
232229
{
233-
// Ignore deserialization errors
230+
if (reader.TokenType == JsonTokenType.EndObject)
231+
return model;
232+
233+
if (reader.TokenType == JsonTokenType.PropertyName)
234+
{
235+
var propertyName = reader.GetString();
236+
reader.Read();
237+
switch (propertyName)
238+
{
239+
case nameof(ExtractedPackageModel.FileName):
240+
model.FileName = reader.GetString() ?? string.Empty;
241+
break;
242+
case nameof(ExtractedPackageModel.FilePath):
243+
model.FilePath = reader.GetString() ?? string.Empty;
244+
break;
245+
case nameof(ExtractedPackageModel.DateExtracted):
246+
if (reader.TryGetDateTimeOffset(out var date))
247+
model.DateExtracted = date;
248+
break;
249+
}
250+
}
234251
}
252+
}
235253

236254
return null;
237255
}
238256

239257
public override void Write(Utf8JsonWriter writer, ExtractedPackageModel value, JsonSerializerOptions options)
240258
{
241-
JsonSerializer.Serialize(writer, value, options);
259+
writer.WriteStartObject();
260+
writer.WriteString(nameof(ExtractedPackageModel.FileName), value.FileName);
261+
writer.WriteString(nameof(ExtractedPackageModel.FilePath), value.FilePath);
262+
writer.WriteString(nameof(ExtractedPackageModel.DateExtracted), value.DateExtracted);
263+
writer.WriteEndObject();
242264
}
243265
}
244266
}

0 commit comments

Comments
 (0)