Я нашел этот ответ весьма полезным, но dbc конкретно говорит:
Конвертер не применяется к спискам, элементы которых также сериализуются как коллекции. , например List
Проблема в том, что мне нужно десериализовать массив, который может быть массивом строк, или это может быть быть массивом массивов строк. Итак, в примере говорится, что в моем случае это не сработает.
Например,
{"values": [ "foo", "bar" ]}
против
{"values": [ [ "foo", "bar" ], [ "baz", "qux" ] ]}
Я думал о реализации собственного класса
public class SingleOrArray : ICollection
{
public bool IsArray { get; set; } = false;
public T Value { get; set; }
public T[] Values { get { return _items.ToArray() } }
private List _items = new();
// etc.
}
С десериализованным объектом, который выглядит следующим образом:
public class MyObject
{ [JsonConverter(typeof(SingleOrArrayCollectionConverter))]
public List Value { get; set; }
}
Но я не знаю, как реализовать JsonConverter, который справится с этим.
Вот мои модульные тесты, которые проходят успешно, но я нужно, чтобы он обрабатывал строку[] в этом случае:
[Fact]
public void SingleItemTest()
{
// Arrange
var testData = "{ \"value\": \"a\" }";
// Act
var target = JsonConvert.DeserializeObject(testData);
// Assert
Assert.False(target!.Value.IsArray);
Assert.Equal("a", target!.Value.Value);
}
[Fact]
public void ArrayItemTest1()
{
// Arrange
var testData = "{ \"value\": [\"a\"] }";
// Act
var target = JsonConvert.DeserializeObject(testData);
// Assert
Assert.True(target!.Value.IsArray);
Assert.Equal("a", target!.Value.Values[0]);
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ay-of-an-a
Использование Newtonsoft.Json для десериализации массива строк по сравнению с массивом массива строк в одной и той же по ⇐ C#
Место общения программистов C#
1729616193
Anonymous
Я нашел этот ответ весьма полезным, но dbc конкретно говорит:
Конвертер не применяется к спискам, элементы которых также сериализуются как коллекции. , например List
Проблема в том, что мне нужно десериализовать массив, который может быть массивом строк, или это может быть быть массивом массивов строк. Итак, в примере говорится, что в моем случае это не сработает.
Например,
{"values": [ "foo", "bar" ]}
против
{"values": [ [ "foo", "bar" ], [ "baz", "qux" ] ]}
Я думал о реализации собственного класса
public class SingleOrArray : ICollection
{
public bool IsArray { get; set; } = false;
public T Value { get; set; }
public T[] Values { get { return _items.ToArray() } }
private List _items = new();
// etc.
}
С десериализованным объектом, который выглядит следующим образом:
public class MyObject
{ [JsonConverter(typeof(SingleOrArrayCollectionConverter))]
public List Value { get; set; }
}
Но я не знаю, как реализовать JsonConverter, который справится с этим.
Вот мои модульные тесты, которые проходят успешно, но я нужно, чтобы он обрабатывал строку[] в этом случае:
[Fact]
public void SingleItemTest()
{
// Arrange
var testData = "{ \"value\": \"a\" }";
// Act
var target = JsonConvert.DeserializeObject(testData);
// Assert
Assert.False(target!.Value.IsArray);
Assert.Equal("a", target!.Value.Value);
}
[Fact]
public void ArrayItemTest1()
{
// Arrange
var testData = "{ \"value\": [\"a\"] }";
// Act
var target = JsonConvert.DeserializeObject(testData);
// Assert
Assert.True(target!.Value.IsArray);
Assert.Equal("a", target!.Value.Values[0]);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79111860/using-newtonsoft-json-for-deserializing-an-array-of-strings-vs-an-array-of-an-a[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия