SQL 2008: возвращение Строки данных в формате JSON?

Я думаю, что этот вопрос похож на стрельбу по глиняным пиджинам ... "Тяни ... взрыв!" ... сбито ... но, тем не менее, стоит спросить, я верю.

Многие JS-фреймворки и т. д. в наши дни используют JSON, и по понятной причине я знаю. Классический вопрос - «где преобразовать данные в JSON?».

Я понимаю, что в какой-то момент в конвейере вы должны преобразовать данные в JSON, будь то на уровне доступа к данным (я смотрю на JSON. Действительно ли плохая идея рассматривать функцию SQL для вывода в виде JSON?

Определитель: Я понимаю, что пытаться выводить тысячи строк подобным образом не очень хорошая идея - на самом деле не очень хорошая идея для веб-приложений в любом случае, если только вам это не нужно. Для моего требования мне нужно, возможно, 100 строк одновременно ...

11
задан Rob 9 August 2010 в 06:44
поделиться

7 ответов

Ответ на самом деле таков: это зависит .

Если ваше приложение маленькое и мало используется, то обязательно сделайте это в базе данных. Однако следует иметь в виду, что происходит, когда ваше приложение используется в 10 раз больше пользователей за 12 месяцев ?

Если это позволяет быстро, просто и легко реализовать кодировку JSON в ваши хранимые процедуры, а не в вашем веб-коде, и позволяет вам получить ваше приложение и использовать его, тогда это, безусловно, путь. Тем не менее, действительно не требуется много работы, чтобы сделать это «должным образом» с решениями, которые были предложены в других ответах.

Короче говоря, выберите решение, которое лучше всего соответствует вашим текущим потребностям, и одновременно подумайте о том, какое влияние оно окажет, если вам понадобится изменить его в будущем.

5
ответ дан 3 December 2019 в 09:18
поделиться

При использовании .net mvc вы сериализуете свои результаты в контроллерах и выводите JsonResult, есть метод Controller.Json (), который делает это за вас. При использовании веб-форм лучше всего подойдут обработчик http и класс JavascriptSerializer.

0
ответ дан 3 December 2019 в 09:18
поделиться

Лучше загрузить его, используя стандартную технику доступа к данным, а затем преобразовать в JSON. Затем вы можете использовать его в стандартных объектах .NET, а также в javascript на стороне клиента.

1
ответ дан 3 December 2019 в 09:18
поделиться

Привет, спасибо за все ответы ... меня до сих пор поражает, сколько людей находят время, чтобы помочь.

Все очень хорошие моменты и, безусловно, подтвердили мое мнение о том, что приложение / слой выполняет работу по преобразованию - как связующее звено между фактическими данными и интерфейсом. Полагаю, я не слишком много работал с MVC или SQL-2008, и поэтому не был уверен, есть ли какие-то самородки, которые стоит отслеживать.

Как это сработало (следуя некоторым ссылкам, размещенным здесь, и продолжая ловить рыбу), я решил пока сделать следующее (застрял на .NET 3.5 и не использовал MVC прямо сейчас ..):

  1. Получение Данные SQL как datatable / datareader
  2. Использование простого преобразования datatable> collection (словаря) для сериализуемого списка
  3. Потому что прямо сейчас я использую страницу ASHX, чтобы действовать как посредник для javascript (т.е. через вызов JQuery AJAX) на моей странице ASHX у меня есть:

    context.Response.ContentType = "application / json"; System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer ();

  4. Затем я могу ввести: json.serialize (<>)

Может показаться немного отсталым, но это работает нормально ... и главное предостережение в том, что он никогда не возвращает огромные объемы данных за раз.

Еще раз спасибо за все отзывы!

0
ответ дан 3 December 2019 в 09:18
поделиться

Лучше всего загрузить данные в часть программы, а затем вернуть их как JSON.

.NET 4 поддерживает возврат json, и я сделал это как часть одного сайта ASP.NET MVC, и это было довольно просто и понятно.

Я рекомендую перенести преобразование из сервера sql

2
ответ дан 3 December 2019 в 09:18
поделиться

Я согласен с другими респондентами, что это лучше сделать в коде вашего приложения. Однако ... это теоретически возможно, если SQL Server может включать сборки CLR в базу данных с использованием синтаксиса create assembly . Выбор действительно за вами. Вы можете создать сборку для перевода в .net, определить эту сборку для SQL Server, а затем использовать содержащиеся в ней методы для сериализации в JSON в качестве возвращаемых значений из ваших хранимых процедур ...

2
ответ дан 3 December 2019 в 09:18
поделиться

Вот почему существует [WebMethod] (WebMethodAttribute).

2
ответ дан 3 December 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: