Windows Store App and JSON Parser (C#) |
Windows Store App and JSON Parser (C#) การเขียน Apps เพื่อเชื่อมต่อแบบ Online สิ่งที่สำคัญที่สุดอย่างหนึ่งคือ การรับ-ส่งข้อมูล ที่มีประสิทธิภาพ มีมาตรฐานที่สามารถรองรับได้ในหลาย ๆ Platform ซึ่งวิธีที่นิยมอย่างมากในปัจจุบันเราคงจะไม่พูดถึง JSON ไม่ได้ ซึ่งเป็นรูปแบบที่ใช้เป็นมาตรฐานในการรับส่งข้อมูลที่ได้รับความนิยมมาก เพราะมีรูปแบบการใช้งานที่ง่าย มีลักษณะเป็นเหมือน ข้อความ (String) ที่ถูกเข้ารหัสไว้ จากนั้นก็สามารถส่งไปยังปลายทาง การสร้างและอ่านก็มี Class และ Function รองรับการทำงาน และใน .NET Framework ก็มีได้หลายวิธีเช่นเดียวกัน ซึ่งหลายคนอาจจะใช้แตกต่างกันไป แต่ในบทความนี้ผมจะแนะนำให้ใช้ Library ที่มีอยู่ใน .NET ที่สามารถเรียกใช้งานได้ง่าย เราจะใช้ NameSpace ของ System.Runtime.Serialization ซึ่งจะรองรับการทำงานบน .NET ได้หลายกหลาย Application
การเรียกใช้ Class
using System.Xml.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Collections.ObjectModel;
สำหรับในบทความนี้จะยกตัวอย่างทั้งการ สร้าง (Encode) และการ อ่าน (Decode) ให้ดูพอเป็นตัวอย่างไว้สำหรับความเข้าใจ และการนำไปใช้งาน
การสร้าง Create JSON (Serialize)
1. การสร้าง JSON แบบข้อมูล Array ชุดเดียว
public class myName
{
public string Name { get; set; }
public string Surname { get; set; }
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
List<myName> nameList = new List<myName>();
myName name = new myName();
name.Name = "Weerachai";
name.Surname = "Nukitram";
nameList.Add(name);
MemoryStream str = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(nameList.GetType());
ser.WriteObject(str, nameList);
str.Position = 0;
StreamReader sr = new StreamReader(str);
this.lblResult.Text = sr.ReadToEnd();
}
Result
2. การสร้าง JSON แบบข้อมูล Array มากกว่า 1 ชุด
public class myName
{
public string Name { get; set; }
public string Surname { get; set; }
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
List<myName> nameList = new List<myName>();
myName name = new myName();
name.Name = "Weerachai";
name.Surname = "Nukitram";
nameList.Add(name);
name = new myName();
name.Name = "Adisorn";
name.Surname = "Bunsong";
nameList.Add(name);
MemoryStream str = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(nameList.GetType());
ser.WriteObject(str, nameList);
str.Position = 0;
StreamReader sr = new StreamReader(str);
this.lblResult.Text = sr.ReadToEnd();
}
Result
3. การอ่าน JSON แบบข้อมูล Array ชุดเดียว
{"Name":"Weerachai","Surname":"Nukitram"}
public class myName
{
public string Name { get; set; }
public string Surname { get; set; }
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string strJSON = string.Empty;
// JSON = {"Name":"Weerachai","Surname":"Nukitram"}
strJSON = " {\"Name\":\"Weerachai\",\"Surname\":\"Nukitram\"}";
myName name = ReadToObject(strJSON);
//name.Name.ToString();
//name.Surname.ToString();
this.lblResult.Text = "Name : " + name.Name.ToString();
this.lblResult.Text = this.lblResult.Text + Environment.NewLine;
this.lblResult.Text = this.lblResult.Text + "Surname : " + name.Surname.ToString();
}
public static myName ReadToObject(string json)
{
myName deserializedMember = new myName();
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedMember.GetType());
deserializedMember = ser.ReadObject(ms) as myName;
return deserializedMember;
}
Result
4. การอ่าน JSON แบบข้อมูล Array หลายชุด
[{"Name":"Weerachai","Surname":"Nukitram"},{"Name":"Adisorn","Surname":"Bunsong"}]
public class myName
{
public string Name { get; set; }
public string Surname { get; set; }
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string strJSON = null;
// JSON = [{"Name":"Weerachai","Surname":"Nukitram"},{"Name":"Adisorn","Surname":"Bunsong"}]
strJSON = " [{\"Name\":\"Weerachai\",\"Surname\":\"Nukitram\"}, {\"Name\":\"Adisorn\",\"Surname\":\"Bunsong\"}]";
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJSON));
ObservableCollection<myName> list = new ObservableCollection<myName>();
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ObservableCollection<myName>));
list = (ObservableCollection<myName>)serializer.ReadObject(ms);
this.lblResult.Text = string.Empty;
foreach (myName name in list)
{
//name.Name.ToString();
//name.Surname.ToString();
this.lblResult.Text = this.lblResult.Text + "Name : " + name.Name.ToString();
this.lblResult.Text = this.lblResult.Text + Environment.NewLine;
this.lblResult.Text = this.lblResult.Text + "Surname : " + name.Surname.ToString();
this.lblResult.Text = this.lblResult.Text + Environment.NewLine;
this.lblResult.Text = this.lblResult.Text + "======================";
this.lblResult.Text = this.lblResult.Text + Environment.NewLine;
}
}
Result
จากบทความนี้เราจะเห็นว่าการสร้าง และ อ่านค่า JSON นั้น เป็นเรื่องที่ง่ายมาก และ เราสามารถนำไปประยุกต์กับการรับส่งข้อมูลจาก Server กับ Windows Store Apps ได้หลากหลายมาก ซึ่งในบทความถัด ๆ ไปทางทีมงานจะยกตัวอย่างการรับส่งค่า JSON ในรูปแบบต่าง ๆ
.
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2014-05-27 09:51:24 /
2017-03-19 15:05:25 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|