Ваша проблема не связана с Array
s или Lists
.
Смотрите примеры классов ниже
public class TestClassList
{
public List<User> users;
}
public class TestClassArray
{
public User[] users;
}
public class User
{
public string user;
}
и предположим, что ваша входная строка
string json1 = "{ users:[{user:'11'},{user:'22'}] }";
var obj1= ser.Deserialize<TestClassList>(json1);
var obj2 = ser.Deserialize<TestClassArray>(json1);
обе десериализации будут работать ..
Но если вы попытаетесь десериализовать эту строку string json2 = "{ users:{user:'11'} }";
var obj3 = ser.Deserialize<TestClassList>(json2);
var obj4 = ser.Deserialize<TestClassArray>(json2); //<--ERROR
вы получите ошибку во второй строке (Althoug в первой строке не выдает ошибку, он также не возвращает действительный объект).
В результате: вторая строка json не содержит массив пользователей, поэтому вы получаете No parameterless constructor defined for type of 'User[]'
.