Я думал, что это довольно легко преобразовать из массива JSON в строку через запятую и обратно, используя Newtonsoft, но у меня возникают проблемы с получением ReadJson
для работы. Я думал, что просто десериализовать из читателя в массив строк, а затем вызвать Join
, но я получаю ошибки: Unexpected token while deserializing object: PropertyName. Path '[0].
.
Вот код, который я использую:
public class myModel
{
[JsonConverter(typeof(CommaSeperatedStringJsonConverter))]
public string myString { get; set; }
public int myNumber { get; set; }
}
public class CommaSeperatedStringJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(string);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var stringArray = serializer.Deserialize(reader, typeof(string[]));
return string.Join(",", stringArray);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value is null)
{
writer.WriteNull();
}
else
{
serializer.Serialize(writer, value.ToString().Split(','), typeof(string[]));
}
}
}