Я уже некоторое время использую netTiers с ExtJ, и это правда, что существуют проблемы с циклическими ссылками при кодировании, но мы редко возвращаем целые сущности и находим, что возвращение подмножества данных сущностей работает хорошо. Мы используем C #; Вот пример:
UserAccountService uaSvc = new UserAccountService();
UserAccount ua = uaSvc.GetByUserId(UserId)[0];
return Json(new { success = true, data = new { ua.UserName, ua.CustomerName, ua.Email } });
Где UserAccountService и UserAccount - это служба и сущность, созданные с использованием шаблонов CodeSmith netTiers, а функция возврата Json () является частью MVC Microsoft. Вы можете заменить другой кодер, такой как Newtonsoft , если вы не используете MVC.
Возвращает JSON, который выглядит следующим образом; Ext.js может легко потреблять это:
{"success": true, data:{"UserName":"Knight", "CustomerName":"Knight Inc.", "Email":"knight@knightknight.com"}}
Вы также можете вернуть список или массив данных, ниже Linq использует их для очень компактного доступа
return Json(new UserAccountService().GetAll().Select(u=>new {u.UserID, u.UserName}));
Это возвращает данные как это:
[{"UserName":"Knight", "CustomerName":"Knight Inc.", "Email":"knight@knightknight.com"}, {"UserName":"George", "CustomerName":"George Inc.", "Email":"george@george.com"}]
Как видите, совместимый JSON легко создать из результатов запроса netTiers. Я не использовал шаблоны, отличные от шаблонов netTiers, но я думаю, что вы пойдете по тому же пути.