1. Newtonsoft.Json 概要
Newtonsoft.Json(通称 Json.NET)は .NETエコシステム向けオープンソースJSONシリアライズ/デシリアライズライブラリです
- 2006年に初版 Json.NET 1.0.1 がリリース、現在メジャーバージョンは10以上まで進化
- 当初は.NET 2.0に対応、.NET Framework/.NET Core/.NET 5+ ほぼ全ての環境で動作
- アセンブリ:
Newtonsoft.Json.dll、NuGetからインストールして利用 - 初期はCodePlexで管理、現在はGitHubへ移行、多くの企業プロジェクトで採用されています
2. JSONとは
JSON(JavaScript Object Notation)
- 軽量で言語に依存しないデータ交換用テキスト形式。JavaScript専用ではありません
- 基本構造:キーと値のペア
key:value;オブジェクト{}、配列[]の入れ子に対応
{"webname":"FoxDevelop","website":"foxdevelop.com","age":4,"students":[{"name":"tom"},{"name":"bill"}]}Code language: C# (cs)
二、エンティティクラス定義(JSON構造に対応)
Person.cs(生徒オブジェクト)
namespace NewtonsoftDemo
{
public class Person
{
public string name { set; get; }
}
}Code language: C# (cs)
WebInfo.cs(ルートオブジェクト)
namespace NewtonsoftDemo
{
public class WebInfo
{
public string webname { set; get; }
public string website { set; get; }
public int age { set; get; }
public Person[] students { set; get; }
}
}Code language: C# (cs)
サンプル‑オブジェクトをJSONへシリアライズ
protected void Page_Load(object sender, EventArgs e)
{
// 1. エンティティを生成し値を代入
WebInfo webInfo = new WebInfo();
webInfo.age = 4;
webInfo.webname = "FoxDevelop";
webInfo.website = "foxdevelop.com";
webInfo.students = new Person[]
{
new Person { name = "TOM" },
new Person { name = "JACK" }
};
// 2. Newtonsoft.Json 低レベル記述:JsonWriterによるシリアライズ
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
new JsonSerializer().Serialize(writer, webInfo);
string json = sw.GetStringBuilder().ToString();
}Code language: C# (cs)
日常開発向け簡略コード
Newtonsoft.Json には静的ユーティリティメソッドが用意され、JsonWriter を手動生成する必要がありません:
// 1行でシリアライズ、開発で最もよく使われる
string json = JsonConvert.SerializeObject(webInfo);Code language: C# (cs)
出力JSON結果
{
"webname": "FoxDevelop",
"website": "foxdevelop.com",
"age": "4",
"students": [
{"name":"TOM"},
{"name":"JACK"}
]
}Code language: C# (cs)
その他
- System.Text.Json:.NET Core 3.0以降のマイクロソフト標準JSONライブラリ。古い.NET Frameworkプロジェクトでは依然Newtonsoft.Jsonが広く使われます
- 機能:プロパティ別名、フィールド除外、日付フォーマット、循環参照処理など高度な機能に対応
概要
Next: シリアライズとデシリアライズ