Сериализация анонимных объектов в dot.net-е

Если использовать стандартную сериализацию dotnet с помощью объекта DataContractJsonSerializer, то можно натолкнуться на определенный проблемы при сериализации анонимных типов. И именно с ними столкнулись мы.
Тоесть, что-то вроде этого не сработает.



public static string ToJSON(this object obj, List knowTypes)
{
DataContractJsonSerializer serializer;
if (knowTypes == null)
serializer = new DataContractJsonSerializer(obj.GetType());
else
serializer = new DataContractJsonSerializer(obj.GetType(), knowTypes);
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, obj);
return Encoding.UTF8.GetString(ms.ToArray());
}
}

Недолго думаю открыл гугл и сделал запрос "anonymous types+serialize" на второй или на третей ссылке наткнулся на вот эту библиотеку. С давнольно мощными возможностями по сериализации в JSON формат.
Например вот так.


JArray a = JArray.FromObject(
new List
{
new {name="Первый пошел"},
new {name="Второй пошел", type = "Танк"},
new {name="Склад пошел", list = new List {
new {name="макароны"},
new {name="тарелки"}
}
}
}

a.ToString();

В результате получаем что-то вроде этого

[
{ "name": "Первый пошел"},
{ "name": "Второй пошел", "type":"Танк"},
{ "name": "Склад пошел", "list":
[
{"name" = "макароны"},
{"name" = "тарелки"}
]
}
]

Вот так.

1 комментарий:

Unknown комментирует...

Спасибо!