Я использую ASP.NET MVC 2 с Visual Studio 2010. Многие действия моего контроллера должны сериализовать мои доменные объекты POCO в JSON.Кстати, я использую nhibernate в качестве своего ORM.
Я использую System.Web.Script.Serialization.JavaScriptSerializer.Он хорошо обрабатывает простые свойства (int, string, date и т. Д.), Но пропускает ссылочные свойства, поэтому мне нужно сопоставить мой объект с анонимным типом, а затем передать этот анонимный тип в JavaScriptSerializer следующим образом:
Public Class Order
Public Property ID As Integer
Public Property Customer As User
End Class
Function Details() As ActionResult
Dim realorder As Order = DB.Get(Of Order)(id)
Dim flattenedorder As New With {
.id = realorder.ID, .customerid = realorder.Customer.ID}
Dim encoder = New System.Web.Script.Serialization.JavaScriptSerializer()
ViewData("order") = encoder.Serialize(flattenedorder)
Return View()
End Function
В приведенном выше примере Order.ID является int, но Order.Customer является ссылкой на другой объект.Мне нужно создать анонимный тип, где я указываю .customerid = realorder.Customer.ID, чтобы он правильно сериализовался.
Что я хочу знать, есть ли более простой способ?Мои доменные объекты имеют много ссылок, и я хочу избегать создания анонимного типа каждый раз, когда хочу сериализовать их в JSON.