You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
1009 B

  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace IPA.JsonConverters
  8. {
  9. internal class MultilineStringConverter : JsonConverter<string>
  10. {
  11. public override string ReadJson(JsonReader reader, Type objectType, string existingValue, bool hasExistingValue, JsonSerializer serializer)
  12. {
  13. if (reader.TokenType == JsonToken.StartArray)
  14. {
  15. var list = serializer.Deserialize<string[]>(reader);
  16. return string.Join("\n", list);
  17. }
  18. else
  19. return reader.Value as string;
  20. }
  21. public override void WriteJson(JsonWriter writer, string value, JsonSerializer serializer)
  22. {
  23. var list = value.Split('\n');
  24. if (list.Length == 1)
  25. serializer.Serialize(writer, value);
  26. else
  27. serializer.Serialize(writer, list);
  28. }
  29. }
  30. }