JSONのデータ構造

JSON(JavaScript Object Notation)のデータ構造

JSONは{"キー":値}の形式でデータを表記します。
(複数のデータを設定したい場合は、{"キー1":値1,"キー2":値2,・・・}の形式で設定できます。)

例となるコードを下に掲載します。

{
  "name": "Test San",
  "score": 80,
  "isStudent": true,
  "skills": ["Soroban", "Instant noodle craftsperson", "SQL"],
  "address": {
    "street": "1234 Five Street",
    "city": "tonari city",
    "postalCode": 12345
  }
}

コードの解説:

  • "name": "Test San":値が文字列のTest Sanのため、値はダブルコーテーション""で囲む必要があります。
  • "score": 80:値が数値の80のため、ダブルコーテーション""なしで設定できます。
  • "isStudent": true:値がブーリアン型の場合、true,falseをダブルコーテーション""なしで設定できます。
  • "skills": ["Soroban", "Instant noodle craftsperson", "SQL"]:値が配列の場合、値は中括弧[]の中にカンマ,で区切って入力します。
    今回は配列に入れる内容はすべて文字列なのでダブルコーテーション""で囲っています。
  • "address": {
        "street": "1234 Five Street",
        "city": "tonari city",
        "postalCode": 12345
      }
    :このキーがaddressの部分では、JSON形式が2重になっています。(いわゆるネストです。)
    2重になっている側でもJSON形式であることは変わらないので、streetとcityは値が文字列のため、ダブルコーテーション""で囲っています。
    postalCodeは値が数値のため、値はそのまま数値だけになっています。

データの受け取り:

C#の場合、JSONのデータを受け取るためのクラスを作成して、他のクラスからPersonクラスを呼び出すことで値を取得するとわかりやすいです。

上記のJSONデータを取得するコード:
public class Person
{
    public string Name { get; set; }
    public int Score { get; set; }
    public bool IsStudent { get; set; }
    public List<string> Skills { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
    public int PostalCode { get; set; }
}

この他にも、System.IOに含まれている、Streamで受け取ってStreamReaderで文字データに直すなど、方法はいろいろあります。
※Streamで受け取る際にSystem.Netに含まれているGetResponseStream()を使います。