Web APIの戻り値でJSONを返そうと思います。文字列をくみ上げるのは大変そうなので、クラスを作成してクラスをシリアライズしてJSONの戻り値の文字列を生成しようと思います。
クラスのオブジェクト情報をJSONの文字列する方法を教えてください~
XML形式でのクラスのシリアライズ、デシリアライズはこちらの記事を参照してください。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace JsonSerializeNetDemo
{
public partial class FormSerialize : Form
{
public FormSerialize()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MyInfo mi = new MyInfo();
mi.ID = Convert.ToInt32(textBox1.Text);
mi.Name = textBox2.Text;
mi.Value = textBox3.Text;
string JsonString = JsonSerializer.Serialize(mi);
textBox4.Text = JsonString;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JsonSerializeNetDemo
{
public class MyInfo
{
public int ID { get; set; }
public string Name { get; set; } = "";
public string Value { get; set; } = "";
}
}
MyInfo mi = new MyInfo();
mi.ID = Convert.ToInt32(textBox1.Text);
mi.Name = textBox2.Text;
mi.Value = textBox3.Text;
JsonSerializer.Serialize()
メソッドを呼び出して、JSON形式にシリアライズしてテキストボックスに表示します。 string JsonString = JsonSerializer.Serialize(mi);
textBox4.Text = JsonString;
/*
(略)
*/
namespace JsonSerializeNetDemo
{
public partial class FormSerialize : Form
{
/*
(略)
*/
private void button2_Click(object sender, EventArgs e)
{
MyInfo mi = new MyInfo();
mi.ID = Convert.ToInt32(textBox1.Text);
mi.Name = textBox2.Text;
mi.Value = textBox3.Text;
JsonSerializerOptions options = new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};
string JsonString = JsonSerializer.Serialize(mi, options);
textBox4.Text = JsonString;
}
}
}
JavaScriptEncoder.Create()
メソッドの引数に
UnicodeRanges.All
を与えてエンコーダーを作成します。 JsonSerializerOptions options = new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};
Serialize
メソッドの第二引数に先に作成した JsonSerializerOptions オブジェクトを与えます。 string JsonString = JsonSerializer.Serialize(mi, options);
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());