Add LocalizedString
This commit is contained in:
@@ -219,6 +219,75 @@ namespace FlaxEngine.Json
|
||||
public override bool CanWriteDiff => true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Serialize LocalizedString as inlined text is not using localization (Id member is empty).
|
||||
/// </summary>
|
||||
/// <seealso cref="Newtonsoft.Json.JsonConverter" />
|
||||
internal class LocalizedStringConverter : JsonConverter
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
|
||||
{
|
||||
var str = (LocalizedString)value;
|
||||
if (string.IsNullOrEmpty(str.Id))
|
||||
{
|
||||
writer.WriteValue(str.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteStartObject();
|
||||
writer.WritePropertyName("Id");
|
||||
writer.WriteValue(str.Id);
|
||||
writer.WritePropertyName("Value");
|
||||
writer.WriteValue(str.Value);
|
||||
writer.WriteEndObject();
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer)
|
||||
{
|
||||
var str = existingValue as LocalizedString ?? new LocalizedString();
|
||||
if (reader.TokenType == JsonToken.String)
|
||||
{
|
||||
str.Id = null;
|
||||
str.Value = (string)reader.Value;
|
||||
}
|
||||
else if (reader.TokenType == JsonToken.StartObject)
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
switch (reader.TokenType)
|
||||
{
|
||||
case JsonToken.PropertyName:
|
||||
{
|
||||
var propertyName = (string)reader.Value;
|
||||
switch (propertyName)
|
||||
{
|
||||
case "Id":
|
||||
str.Id = reader.ReadAsString();
|
||||
break;
|
||||
case "Value":
|
||||
str.Value = reader.ReadAsString();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case JsonToken.Comment: break;
|
||||
default: return str;
|
||||
}
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool CanConvert(Type objectType)
|
||||
{
|
||||
return objectType == typeof(LocalizedString);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/// <summary>
|
||||
/// Serialize Guid values using `N` format
|
||||
|
||||
Reference in New Issue
Block a user