XML形式でのクラスのシリアライズ、デシリアライズはこちらの記事を参照してください。
WriteObject()
メソッドを利用します。
デシリアライズする倍には、DataContractJsonSerializer オブジェクトのReadObject()
メソッドを利用します。System.Runtime.Serialization
を追加します。using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
namespace JsonSerializeDemo
{
[System.Runtime.Serialization.DataContract]
class InfoClass
{
[System.Runtime.Serialization.DataMember()]
public int ID { get; set; }
[System.Runtime.Serialization.DataMember()]
public string Name { get; set; }
}
}
using System.Runtime.Serialization.Json;
を追加し、シリアライズのクラスを参照できるようにします。プロジェクトの[参照設定]にもSystem.Runtime.Serializationアセンブリの参照を追加します。[System.Runtime.Serialization.DataContract]
を記述しDataContract属性を付与します。[System.Runtime.Serialization.DataMember()]
を記述し、DataMember属性を付与します。using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Json;
namespace JsonSerializeDemo
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(InfoClass));
InfoClass infoc = new InfoClass();
infoc.ID = Convert.ToInt32(textBox_ID.Text);
infoc.Name = textBox_Name.Text;
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, infoc);
string JsonString = Encoding.UTF8.GetString(ms.ToArray());
textBox_Output.Text = JsonString;
}
private void button2_Click(object sender, EventArgs e)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(InfoClass));
byte[] bytes = Encoding.UTF8.GetBytes(textBox_Output.Text);
MemoryStream ms = new MemoryStream(bytes);
InfoClass infoc = (InfoClass)serializer.ReadObject(ms);
textBox_ID.Text = Convert.ToString(infoc.ID);
textBox_Name.Text = infoc.Name;
}
private void button3_Click(object sender, EventArgs e)
{
textBox_ID.Text = "";
textBox_Name.Text = "";
}
}
}
using System.Runtime.Serialization.Json;
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(InfoClass));
InfoClass infoc = new InfoClass();
infoc.ID = Convert.ToInt32(textBox_ID.Text);
infoc.Name = textBox_Name.Text;
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, infoc);
string JsonString = Encoding.UTF8.GetString(ms.ToArray());