2010-08-07 16 views
11

Myślę, że to pytanie jest jak strzelanie do gliny pidgeon ... "pull ... bang!" .. zestrzelony .. ale mimo to warto pytać, czy wierzę.SQL 2008: zwracanie wierszy danych jako JSON?

Wiele frameworków JS itd. Używają JSON obecnie, i nie bez powodu wiem. Klasyczne pytanie brzmi "gdzie przekształcić dane w JSON".

Rozumiem, że w pewnym momencie potoku, musisz przekonwertować dane do JSON, czy to w warstwie dostępu do danych (patrzę na JSON.NET) czy też wierzę w .NET 4.x są metody do wyjścia/serializacji jako JSON.

Pytanie brzmi: Czy naprawdę nie jest dobrym pomysłem kontemplowanie funkcji SQL w celu uzyskania wyniku jako JSON?

Kwalifikator: Rozumiem, że próba wyprowadzenia 1000 takich wierszy nie jest dobrym pomysłem - w rzeczywistości nie jest to dobry pomysł na aplikacje internetowe w żaden sposób, chyba że naprawdę trzeba. Dla mojego wymagania, potrzebuję ewentualnie 100 wierszy naraz ...

Odpowiedz

5

Odpowiedź brzmi: to zależy od.

Jeśli twoja aplikacja jest niewielka, nie ma dużego zastosowania, to zrób to w bazie danych. Należy jednak pamiętać, , co dzieje się, gdy aplikacja jest używana przez 10 razy więcej użytkowników w ciągu 12 miesięcy?

Jeśli to sprawia, że ​​szybkie, proste i łatwe wdrożenie kodowania JSON w procedurach przechowywanych, a nie w kodzie sieciowym i pozwala uzyskać aplikację w użyciu, to jest to najlepszy sposób, aby przejść. To powiedziawszy, naprawdę nie wymaga tak dużo pracy, aby zrobić to "poprawnie" z rozwiązaniami, które zostały zasugerowane w innych odpowiedziach.

Długie i krótkie to rozwiązanie, które najlepiej odpowiada aktualnym potrzebom, a jednocześnie zastanawia się, jaki będzie miał wpływ na jego zmianę w przyszłości.

1

Lepiej załadować go przy użyciu standardowej techniki dostępu do danych, a następnie przekonwertować na JSON. Następnie można go używać w standardowych obiektach w .NET oraz w javascript po stronie klienta.

0

Jeśli używasz .net mvc serializujesz wyniki w swoich kontrolerach i wypisujesz JsonResult, istnieje metoda Controller.Json(), która robi to za ciebie. Jeśli korzystasz z formularzy internetowych, procedura obsługi http i klasa JavaScriptSerializer będą do zrobienia.

2

To dlatego istnieje [WebMethod] (WebMethodAttribute).

2

Najlepiej załadować dane do fragmentu programu, a następnie zwrócić jako JSON.

. NET 4 ma wsparcie dla zwrotu json i zrobiłem to jako część jednej strony ASP.NET MVC i było to dość proste i proste.

polecam przejść transformację z serwerem sql

2

zgadzam się z innych respondentów, że jest to lepiej zrobione w kodzie aplikacji. Jednak ... jest to teoretycznie możliwe przy użyciu SQL Server do włączenia zespołów CLR do bazy danych przy użyciu składni create assembly. Wybór jest naprawdę twój. Można utworzyć zespół do tłumaczenia w .net, zdefiniuj ten zestaw do SQL Server, a następnie użyj zawartych metod do serializowania do JSON jako wartości zwracanych z procedur składowanych ...

0

Hej, dziękuję za wszystkie odpowiedzi ... wciąż mnie zadziwia, ilu ludzi ma czas, aby pomóc.

Wszystkie bardzo dobre punkty, i na pewno potwierdziły moje poczucie, że pozwalam aplikacji/warstwie wykonywać pracę konwersji - jako klej między rzeczywistymi danymi a frontendem. Wydaje mi się, że nie utrzymywałem zbyt wiele z MVC lub SQL-2008, a więc nie byłem pewien, czy są jakieś bryłki warte śledzenia.

Jak wyszło (po niektóre linki zamieszczone tutaj i dalej rybołówstwo) I zdecydowały się wykonać następujące czynności w chwili obecnej (zatrzymany z powrotem przy użyciu .NET 3.5 i nie MVC teraz ..):

  1. Uzyskiwanie danych SQL jak DataTable/datareader
  2. używając prostego DataTable> kolekcja (słownik) konwersji do listy serializable
  3. bo teraz używam stronę ashx działać jako pośrednik do javascript (tj. za pośrednictwem wywołania JQuery AJAX), na mojej stronie ASHX mam:

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

  4. mogę wtedy problem: json.serialize (<>)

może wydawać się nieco do tyłu, ale to działa dobrze .. a głównym zastrzeżeniem jest to, że nie jest nigdy powrocie ogromne ilości dane na raz.

Jeszcze raz dziękuję za wszystkie rekonsy!

+0

Dlaczego nie dekorujesz swojej metody za pomocą [WebMethod], więc nie musisz ręcznie pisać tego kodu? – Hut8

Powiązane problemy