C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で.NETの整形されたJSONを取得する方法(Newtonsoft.Json活用ガイド)

C#でJSONを扱う際、そのまま出力すると読みにくいことがあります。そんなときに便利なのが Newtonsoft.Json.Formatting 名前空間です。この名前空間は、JSONの出力形式を制御するための書式設定オプションを提供しています。

Formattingオプションの種類

Newtonsoft.Json.Formatting には、主に以下の2つのオプションがあります。

None(デフォルト)

特別な書式を一切適用しません。これがデフォルトの動作で、余分な空白や改行のないコンパクトなJSONが出力されます。通信データ量を抑えたい場合に適しています。

Indented

子オブジェクトをインデントして整形した状態で出力します。インデントの幅や文字は、JsonTextWriter.Indentation および JsonTextWriter.IndentChar の設定に従います。人間が読みやすい形式になるため、ログ出力やデバッグ時に便利です。

例1:Formatting.Indented を使った整形出力

static void Main(string[] args){
    Product product = new Product{
        Name = "Apple",
        Expiry = new DateTime(2008, 12, 28),
        Price = 3.9900M,
        Sizes = new[] { "Small", "Medium", "Large" }
    };
    string json = JsonConvert.SerializeObject(product, Formatting.Indented);
    Console.WriteLine(json);
    Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);
    Console.ReadLine();
}
class Product{
    public String[] Sizes { get; set; }
    public decimal Price { get; set; }
    public DateTime Expiry { get; set; }
    public string Name { get; set; }
}

実行結果

Indented を指定すると、改行とインデントが付いた見やすいJSONが出力されます。

{
    "Sizes": [
        "Small",
        "Medium",
        "Large"
    ],
    "Price": 3.9900,
    "Expiry": "2008-12-28T00:00:00",
    "Name": "Apple"
}

例2:Formatting.None を使ったコンパクト出力

static class Program{
    static void Main(string[] args){
        Product product = new Product{
            Name = "Apple",
            Expiry = new DateTime(2008, 12, 28),
            Price = 3.9900M,
            Sizes = new[] { "Small", "Medium", "Large" }
        };
        string json = JsonConvert.SerializeObject(product, Formatting.None);
        Console.WriteLine(json);
        Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);
        Console.ReadLine();
    }
}
class Product{
    public String[] Sizes { get; set; }
    public decimal Price { get; set; }
    public DateTime Expiry { get; set; }
    public string Name { get; set; }
}

実行結果

None を指定すると、空白や改行のない1行のコンパクトなJSONが出力されます。

{"Sizes":["Small","Medium","Large"],"Price":3.9900,"Expiry":"2008-12-28T00:00:00","Name":"Apple"}

使い分けのポイント

APIレスポンスなどマシン間の通信には Formatting.None を、ログや設定ファイル、開発時の確認など人間が読む場面には Formatting.Indented を使うのが一般的です。用途に応じて適切に使い分けることで、可読性とパフォーマンスのバランスを取ることができます。

  1. Windows 10でPowerShellを使ってパブリックIPアドレスを確認する方法

    パブリックIPアドレス(グローバルIPアドレス)とは、その名の通り、インターネット上でコンピューターやネットワークを識別するために割り当てられるIPアドレスのことです。インターネットにつながらない、通信が不安定といった接続トラブルの原因を調査する際には、現在のパブリックIPアドレスを確認する必要があるケースもあります。 パブリックIPアドレスを調べる方法としては、ネット上に多数存在する「IPアドレス検索サービス」を利用するのが一般的ですが、実はたった1つのコマンドを実行するだけでも確認できることをご存じでしょうか。 この記事では、Windows 10のPowerShellを使って、パブリックI

  2. Parallelsを使ってMacにWindowsを導入する方法を徹底解説

    MacとWindowsの両方のプラットフォームを頻繁に使う方にとって、Mac上でWindows OSやアプリを利用できるのは非常に便利です。「MacはWindowsと相性が悪いのでは?」と思うかもしれませんが、実は専用アプリを使えば誰でも簡単に実現できます。MacでWindowsを導入する方法として最も人気があるのが、仮想化ソフト「Parallels Desktop」を利用する方法です。 Parallelsを使ってMacにWindowsを導入する手順 Macユーザーの中には、仕事などで必要なWindowsアプリを同じ画面で動かしたいと考えている方も多いでしょう。Parallelsを使えば、そ