概要

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が広く使われます
  • 機能:プロパティ別名、フィールド除外、日付フォーマット、循環参照処理など高度な機能に対応

概要

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です