#c# #asp.net-web-api #type-conversion
Вопрос:
Очевидно, что у меня есть свойство модели object
типа для вывода оттуда значений любого типа. Моя задача-поместить туда List<int>
значение, но когда я помещаю его как есть или, например, когда list.Cast<object>()
я получаю массив массивов, как [[1], [2], [255]]
в этом поле модели, после сериализации JSON на выходе контроллера.
Важно, что я не могу изменить тип свойства. Какие-нибудь советы?
Вот код этого свойства. DocumentChildIds
, BoolValue
и т.д. Являются другими свойствами в этом классе модели:
public object ResolvedValue =>
FieldType == CustomFieldType.Document ? DocumentChildIds :
FieldType == CustomFieldType.Boolean ? BoolValue :
FieldType == CustomFieldType.Date ? DateValue.HasValue ? DateValue.Value.ToShortDateString() : "" :
FieldType == CustomFieldType.Integer ? IntValue :
FieldType == CustomFieldType.DB_LOOKUP
|| FieldType == CustomFieldType.LOOKUP
|| FieldType == CustomFieldType.MULTI_LOOKUP
|| FieldType == CustomFieldType.LOOKUP_TO_CLIENT ? (object) LookupId : StringValue; //by default all the rest types having string value
где DocumentChildIds
List<int>
при вводе типа и при вводе {1,2,3}
я получаю [[1],[2],[3]]
Json вместо [1,2,3]
Комментарии:
1. Было бы очень полезно показать нам некоторый код, а также некоторые примеры ввода и вывода.
Ответ №1:
Моя ошибка. Это значение свойства передается Group by
после разрешения, где ToList()
оно вызывается, и становится массивом массива.
var arrayValueFields = documentComposite
.Where(i => ArrayValueResultTypes.Contains(i.FieldType))
.GroupBy(i => i.FieldId)
.Select(g => new DocumentItemFieldValueDto
{
FieldId = g.Key,
FieldType = g.Select(i => i.FieldType).FirstOrDefault(),
FieldCaption = g.Select(i => i.FieldCaption).FirstOrDefault(),
FieldValue = g.Select(i => i.ResolvedValue).ToList()
...
}
Не повторяй моей ошибки