Fix some problems with LocalizedString serialization in C#

This commit is contained in:
Wojtek Figat
2021-08-11 14:58:56 +02:00
parent d85c65bfc5
commit 26d37103ba

View File

@@ -244,16 +244,21 @@ namespace FlaxEngine.Json
/// <inheritdoc /> /// <inheritdoc />
public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
{ {
#if FLAX_EDITOR
bool writeTypename = (serializer.TypeNameHandling & TypeNameHandling.Objects) == TypeNameHandling.Objects;
#else
bool writeTypename = false;
#endif
var str = (LocalizedString)value; var str = (LocalizedString)value;
if (string.IsNullOrEmpty(str.Id)) if (string.IsNullOrEmpty(str.Id) && !writeTypename)
{ {
writer.WriteValue(str.Value); writer.WriteValue(str.Value ?? string.Empty);
} }
else else
{ {
writer.WriteStartObject(); writer.WriteStartObject();
#if FLAX_EDITOR #if FLAX_EDITOR
if ((serializer.TypeNameHandling & TypeNameHandling.Objects) == TypeNameHandling.Objects) if (writeTypename)
{ {
writer.WritePropertyName("$type"); writer.WritePropertyName("$type");
writer.WriteValue("FlaxEngine.LocalizedString, FlaxEngine.CSharp"); writer.WriteValue("FlaxEngine.LocalizedString, FlaxEngine.CSharp");