c# deserialize part of json

233
15 мая 2018, 11:30

Есть нижеследущий JSON

{
  "items": [
    {
      "name": "Book",
      "description": "",
    }
  ]
}
class ActionCollection 
{
    [JsonProperty("items")]
    public string Content { get; set; }
}

нужно преобразовать массив в строку при десериализации. Сейчас падает с ошибкой Unexpected character encountered while parsing value: [. Path 'items''

Answer 1

Кастомный конвертер создайте:

public class ListToStringConverter : JsonConverter {
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) {
        throw new NotImplementedException();
    }
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) {
        JArray data = serializer.Deserialize<JArray>(reader);
        // тут что-то делаем, преобразуем в строку, например
        return data.ToString();
    }
    public override bool CanConvert(Type objectType) {
        throw new NotImplementedException();
    }
}

И в классе его назначьте:

internal class ActionCollection {
    [JsonProperty("items")]
    [JsonConverter(typeof (ListToStringConverter))]
    public string Content { get; set; }
}
READ ALSO
Как восстановить привязку?

Как восстановить привязку?

TreeView заполняется программно при помощи ObservableCollectionПривязка устанавливается в том числе и на открытие-закрытие Items TreeView, что бы открывать...

237
Как обновить DataGrid после удаления строки

Как обновить DataGrid после удаления строки

я создал таблицу DataGrid, добавил класс который нумерует строки по порядку, но когда мне нужно удалить какую-нибудь строку с помощью клавиши...

200
Не удается неявно преобразовать тип &ldquo;string[]&rdquo; в &ldquo;string&rdquo;

Не удается неявно преобразовать тип “string[]” в “string”

Помогите плиз довести до умаесть скрипт который ищет идентичные строки в массиве и выводит в консоль их порядковый номер

199
Как сохранить сессию клиента?

Как сохранить сессию клиента?

Сайт чатКак сделать так, чтобы не приходилось с каждым открытием заново перелогиниваться?

189