сериализация / десериализация списка <T>в JSON - PullRequest
5 голосов
/ 27 мая 2011

Я хочу иметь возможность сериализовать / десериализовать общий список, что я до сих пор это

    public static string ToJson(this object obj, int recursionDepth = 100) 
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        serializer.RecursionLimit = recursionDepth;
        return serializer.Serialize(obj);
    }

    public static List<T> ToListObject<T>(this string obj, int recursionDepth = 100)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        serializer.RecursionLimit = recursionDepth;
        List<T> returnList = serializer.Deserialize<List<T>>(obj);
        return returnList;
    }

Я тоже пробовал (List<T>)serializer.DeserializeObject(obj)

С Deserialize он десериализуется неправильно (до пустого List<T> объекта), а с DeserializeObject он выдает ошибку, говорящую: «Не удалось десериализовать данную строку в массив T». И я не смогу использовать IOStream :( Действительно оценил бы любое понимание.

ОБНОВЛЕНИЕ: Даже базовая сериализация / десериализация работает, это был не мой день, когда я опубликовал это. :)

1 Ответ

10 голосов
/ 27 мая 2011

Примерьте размер:

public static T ToObject<T>(this string obj, int recursionDepth = 100)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    serializer.RecursionLimit = recursionDepth;
    return serializer.Deserialize<T>(obj);
}

Тогда используйте это так:

mystring.ToObject<List<MyClass>>();
...