کار با JSON در #C

سه شنبه 6 مهر 1395

دراین مقاله با مفهوم JSon آشنا خواهید شد. و همچنین یاد خواهید گرفت که چگونه JSon String را در #C ایجاد کنید و چگونه آن را بخوانید.

کار با JSON در #C

JSon   چیست؟

   (Java Script Object Notation) JSonیک طرح استاندارد، برای تبادل داده ای که قابل خواندن برای انسان است ، می باشد. به نظر می رسد که JSon  به خاطر توسعه دهندگان ، به گونه ای طراحی شده است که قابل خواندن برای انسان( ‘human-readable’) میباشد. JSon  با سه ساختار کار می کند و مانند XML  می باشد ،که بسیار  راحت تر و کوتاه تر می باشد.اگر شما با XML  کار کرده باشید ، قطعا سریع ترJSon  را یاد خواهید گرفت.

مقایسه JSon  با XML:

می خواهیم این عبارت را بررسی کنیم { "name": "Stephen Cousins" },

اگر شما از JSon  استفاده کنید ، شما باید عبارت خود را در داخل تگ “{ }” قرار دهید.

"name" یک کلید می باشد.

"Stephen Cousins" یک مقدار برای کلید "name" می باشد.

JSon  دارای منطق،  مانند {“key”: “value”} می باشد.

و همچنین JSon  دارای آرایه می باشد.

حال می خواهیم عبارت های دیگری را مورد بررسی قرار دهیم.

•  "students": [  
•  { "name": "Stephen Cousins" },  
•  { "name": "Austin A. Newton" },  
•  { "name": "Adam Wilhite" },  
•  { "name": "Enis Kurtay YILMAZ" }  
•  ]
•  ”              

"students" ،کلید می باشد.

"”] و “[“  براکت ها نشان دهنده ی آرایه ها می باشند.این به این معناست که آرایه ها در داخل براکت ها قرار می گیرند.

تمامی عبارت های داخل براکت، مقادیر کلید “students” می باشند.

همانطور که می بینید در این جا چهار آرایه در داخل براکت داریم که نام چهار دانش آموز را نشان میدهد.

چگونه رشته  JSonرا در C#  ایجاد کنیم.

لطفا یک پروژه کنسولی در ویژوال استودیو  ایجاد کنید.

روی File  کلیک کنید ، New، Project  ، و سپس Console Application (.NET Framework3.5)  

اگر شما می خواهید یک رشته  JSon  ایجاد کنید ویا اینکه آن را بخوانید،شما به یک JSon Serialize    یا Deserialize نیاز دارید. بنابراین ، لطفا Solution Explorer  خود را باز کنید ، روی Reference  راست کلیک کنید و سپس روی "Manage NuGet Packages" کلیک کنید.

لطفا“Newtonsoft.JSON” در Nuget Package Manager ، سرچ کنید و آن را نصب کنید.

لطفا “using Newtonsoft.Json;" را add  کنید اگر فراموش کنید که آن را اضافه کنید ، شما نمی توانید هیچ رشته ای از JSon  را مرتب (Serialize) کنید.

مثالی از JSon:

1.	JSON  
2.	{  
3.	    "universities":   
4.	    {  
5.	        "university": "South Carolina State University",  
6.	        "students": [  
7.	          {  
8.	            "name": "Stephen Cousins"  
9.	        }, {  
10.	            "name": "Austin A. Newton"  
11.	        }, {  
12.	            "name": "Adam Wilhite"  
13.	        }, {  
14.	            "name": "Enis Kurtay YILMAZ"  
15.	        }]  
16.	    }  

حال ،شما باید یک کلاس برای JSon  ایجاد کنید. اگر می خواهید به راحتی این کار را انجام دهید ، شما می توانید از وب سایت jsonutils.com    استفاده کنید.

ایجاد رشته JSon در C#

کد C#  برای ایجاد JSONرشته :

1.	using System;  
2.	using System.Collections.Generic;  
3.	using Newtonsoft.Json;  
4.	  
5.	Namespace EKY.CSharpCornerJSONArticle  
6.	{  
7.	    public class Student   
8.	    {  
9.	        public string name {  
10.	            get;  
11.	            set;  
12.	        }  
13.	    }  
14.	    public class Universities {  
15.	        public string university {  
16.	            get;  
17.	            set;  
18.	        }  
19.	        public IList < Student > students {  
20.	            get;  
21.	            set;  
22.	        }  
23.	    }  
24.	    public class ClassUniversities {  
25.	        public Universities universities {  
26.	            get;  
27.	            set;  
28.	        }  
29.	    }  
30.	    class Program  
31.	    {  
32.	        static void Main(string[] args)   
33.	        {  
34.	            Class Universities university1 = newClassUniversities();  
35.	  
36.	            university1.universities = newUniversities();  
37.	            university1.universities.university = "South Carolina StateUniversity";  
38.	  
39.	            List < Student > listStudent = newList < Student > ();  
40.	            Student student1 = newStudent {  
41.	                name = "StephenCousins"  
42.	            };  
43.	            Student student2 = newStudent {  
44.	                name = "Austin A. Newton"  
45.	            };  
46.	            Student student3 = newStudent {  
47.	                name = "Adam Wilhite"  
48.	            };  
49.	            Student student4 = newStudent {  
50.	                name = "Enis Kurtay YILMAZ"  
51.	            };  
52.	  
53.	            listStudent.Add(student1);  
54.	            listStudent.Add(student2);  
55.	            listStudent.Add(student3);  
56.	            listStudent.Add(student4);  
57.	  
58.	            university1.universities.students = listStudent;  
59.	            String json = JsonConvert.SerializeObject(university1);  
60.	  
61.	            Console.WriteLine(json);  
62.	            Console.ReadLine();  
63.	        }  
64.	    }  
65.	}  

نتیجه:

چگونه رشته  JSonرا در C#  بخوانیم.

این قسمت برای شما آسان تر خواهد بود. شما فقط به یک مثال از رشته JSon  و کلاس JSon  نیاز دارید.شما می توانید دوباره از وب سایت jsonutils.com  برای   ایجاد کلاس JSon   استفاده کنید.

کد C#  برای خواندن رشته JSon از وب سایت :

1.	using System;  
2.	using System.Collections.Generic;  
3.	using Newtonsoft.Json;  
4.	using System.Net;  
5.	using System.IO;  
6.	  
7.	namespace EKY.CSharpCornerJSONArticle  
8.	{  
9.	    public class Category  
10.	    {  
11.	        public int id {  
12.	            get;  
13.	            set;  
14.	        }  
15.	        public string slug {  
16.	            get;  
17.	            set;  
18.	        }  
19.	        public string title {  
20.	            get;  
21.	            set;  
22.	        }  
23.	        public string description {  
24.	            get;  
25.	            set;  
26.	        }  
27.	        public int parent {  
28.	            get;  
29.	            set;  
30.	        }  
31.	        public int post_count {  
32.	            get;  
33.	            set;  
34.	        }  
35.	    }  
36.	    public class Tag {  
37.	        public int id {  
38.	            get;  
39.	            set;  
40.	        }  
41.	        public string slug {  
42.	            get;  
43.	            set;  
44.	        }  
45.	        public string title {  
46.	            get;  
47.	            set;  
48.	        }  
49.	        public string description {  
50.	            get;  
51.	            set;  
52.	        }  
53.	        public int post_count {  
54.	            get;  
55.	            set;  
56.	        }  
57.	    }  
58.	    public class Author {  
59.	        public int id {  
60.	            get;  
61.	            set;  
62.	        }  
63.	        public stringslug {  
64.	            get;  
65.	            set;  
66.	        }  
67.	        public string name {  
68.	            get;  
69.	            set;  
70.	        }  
71.	        public string first_name {  
72.	            get;  
73.	            set;  
74.	        }  
75.	        public string last_name {  
76.	            get;  
77.	            set;  
78.	        }  
79.	        public string nickname {  
80.	            get;  
81.	            set;  
82.	        }  
83.	        public strin gurl {  
84.	            get;  
85.	            set;  
86.	        }  
87.	        public string description {  
88.	            get;  
89.	            set;  
90.	        }  
91.	    }  
92.	    public class CustomFields {}  
93.	    public class Post {  
94.	        public int id {  
95.	            get;  
96.	            set;  
97.	        }  
98.	        public string type {  
99.	            get;  
100.	            set;  
101.	        }  
102.	        public string slug {  
103.	            get;  
104.	            set;  
105.	        }  
106.	        public string url {  
107.	            get;  
108.	            set;  
109.	        }  
110.	        public string status {  
111.	            get;  
112.	            set;  
113.	        }  
114.	        public string title {  
115.	            get;  
116.	            set;  
117.	        }  
118.	        public string title_plain {  
119.	            get;  
120.	            set;  
121.	        }  
122.	        public string content {  
123.	            get;  
124.	            set;  
125.	        }  
126.	        public string excerpt {  
127.	            get;  
128.	            set;  
129.	        }  
130.	        public string date {  
131.	            get;  
132.	            set;  
133.	        }  
134.	        public string modified {  
135.	            get;  
136.	            set;  
137.	        }  
138.	        public IList < Category > categories {  
139.	            get;  
140.	            set;  
141.	        }  
142.	        public IList < Tag > tags {  
143.	            get;  
144.	            set;  
145.	        }  
146.	        public Author author {  
147.	            get;  
148.	            set;  
149.	        }  
150.	        public IList < object > comments {  
151.	            get;  
152.	            set;  
153.	        }  
154.	        public IList < object > attachments {  
155.	            get;  
156.	            set;  
157.	        }  
158.	        public int comment_count {  
159.	            get;  
160.	            set;  
161.	        }  
162.	        public stringc omment_status {  
163.	            get;  
164.	            set;  
165.	        }  
166.	        public CustomFields custom_fields {  
167.	            get;  
168.	            set;  
169.	        }  
170.	    }  
171.	    public class Query {  
172.	        public bool ignore_sticky_posts {  
173.	            get;  
174.	            set;  
175.	        }  
176.	    }  
177.	    public class ClassWebsiteposts {  
178.	        public string status {  
179.	            get;  
180.	            set;  
181.	        }  
182.	        public int count {  
183.	            get;  
184.	            set;  
185.	        }  
186.	        public int count_total {  
187.	            get;  
188.	            set;  
189.	        }  
190.	        public int pages {  
191.	            get;  
192.	            set;  
193.	        }  
194.	        public IList < Post > posts {  
195.	            get;  
196.	            set;  
197.	        }  
198.	        public Query query {  
199.	            get;  
200.	            set;  
201.	        }  
202.	    }  
203.	    class Program  
204.	    {  
205.	        static void Main(string[] args)   
206.	        {  
207.	            string url = "http://www.eniskurtayyilmaz.com/api/get_posts/";  
208.	  
209.	            HttpWebRequestrequest = WebRequest.Create(url) asHttpWebRequest;  
210.	            string jsonValue = "";  
211.	            using(HttpWebResponseresponse = request.GetResponse() asHttpWebResponse)  
212.	            {  
213.	                StreamReaderreader = newStreamReader(response.GetResponseStream());  
214.	                jsonValue = reader.ReadToEnd();  
215.	            }  
216.	  
217.	            ClassWebsitepostswebsitePosts = JsonConvert.DeserializeObject < ClassWebsiteposts > (jsonValue);  
218.	        }  
219.	    }  
220.	}  

نتیجه:

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 9k بازدید
  • 18 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید