فرض کنید در نرم افزاری که از وب سرویس ها استفاده می کند از
DataSet ها در ADO.NET برای خواندن داده ها و ارسال آنها به مصرفکنندگان آن سرویس استفاده میکنید. داده ها در قالب
XML ارسال میشوند. و همچنین فرض کنید آن وب سرویس هم اکنون نیازمند ارسال داده ها با استفاده از JSON می باشد. در
ابتدا ممکن است به تبدیل کردن نتایج Query به داده های JSON فکر کنید. این کار با استفاده از قابلیت های جدید SQL
Server به راحتی قابل انجام است اما موضوع مهم تر اینکه برای تبدیل کردن داده های وب سرویس خود از XML به JSON نیاز
به این قابلیت ندارید. در ادامه روش انجام این کار را به صورت عملی به شما آموزش خواهیم داد.
در ابتدای کار نیازمند استخراج DataTable ی که سطرهای DataSet
را در درون خودش قرار داده است می باشید.
Dim dt As DataTable
dt = MyDataSet.Tables("Customers")
پس از آن یک شی از کلاس JsonSerializer ایجاد کنید.
Dim js As JsonSerializer
js = JsonSerializer.CreateDefault
پس از ایجاد این شی میتوانید پروپرتی هایی از این شی را تنظیم
کنید تا JSON خروجی بر اساس فرمت مورد نظر شما ساخته شود.
در ادامه DataTable و JsonSerializer را به متد FromObject پاس
دهید. متد FromObject تمامی محتویات و سطر های موجود در DataTable را به آرایه ای از نوع JToken تبدیل خواهد کرد. کد
زیر نحوه انجام این کار را به شما نشان می دهد.
Dim rows As JArray
rows = JArray.FromObject(dt, js)
پس از انجام این کار می توانید تمامی محتویات را به سمت مصرف
کننده سرویس تان ارسال کنید.
Return rows.ToString()
علاوه بر این کار می توانید با استفاده از LINQ فقط سطرهایی که
مد نظرتان هست را انتخاب کرده و به سمت مصرف کننده سرویس بفرستید. برای مثال در کد زیر اولین سطر انتخاب شده و به
سمت مصرف کننده سرویس ارسال میشود.
Dim row As JToken
row = rows.FirstOrDefault
Return row.ToString