WebAPI: Правильно поместите переменную List в свойство типа объекта

#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()
                  ...
                 }
 

Не повторяй моей ошибки