【初心者向け】JSONとは?データ形式の基礎や書き方、使用例などを解説

 2024.07.31  株式会社システムインテグレータ

TSC

Python、PHP、JavaScript、C++、Javaなど様々な言語でサポートされており、軽量なテキスト形式のJSONを間に挟むことで各プログラミング言語間のデータの受け渡しがとても簡単にできます。

本記事ではこれからJSONを学ぶ方向けに、JSONの概要や書き方を解説します。

JSONとは

JSONとは「JavaScript Object Notation」の略で、「JavaScriptのオブジェクトの書き方を元にしたデータ定義方法」のことです。

JavaScriptでオブジェクトを作成する際は {} や [] などの括弧を使って記述しますが、JSONはその記法を元にしています。元々はJavaScriptで使われる想定で作成されたデータ構造なので、JavaScriptと非常に相性が良いです。現在はJavaScript以外にもPythonやJava、PHPなどの幅広い言語で使われていて、JavaScriptなどのクライアント言語とPythonなどのサーバサイド言語間のデータのやり取りで使われることが多いです。

JSONの特徴

JSONの特徴としてまず挙げられるのが軽量であることです。タグなどを含まないコンパクトなテキスト形式であるため、データ転送の効率が高く、データを高速で通信する必要がある場合にも有用です。

また、シンプルで可読性が高い点も特徴のひとつです。人にもコンピュータにも理解しやすい形式で書かれていて柔軟性も高いため、複雑なデータ構造も表現し、直感的に把握できます。

これらの特徴に加え多くのプログラミング言語でサポートされているため、現代のWeb開発やAPI設計において欠かせないフォーマットとして幅広く活用されています。

JSONの主な用途

JSONは軽量で扱いやすいデータ交換フォーマットとして幅広いシーンで使われますが、その用途は主に2つに分けられます。具体的な使用例は後述しますが、ここではJSONの主な用途について説明します。

1.APIにおけるデータの受け渡し

JSONは、汎用性が高いことから異なるシステムやプログラミング言語の間でのデータのやり取りに活用されます。APIサーバーを通してデータを転送する際の標準として使用されている言語です。

2.データの保存

JSONは、データ保存の形式としても使用されます。オブジェクト型や辞書型など、言語によってはそのままの保存が可能です。また、PythonにはJSONフォーマットを辞書型やCSVなどのフォーマットに変換する機能もあります。

JSONとXML・CSVとの違い

近年、データのやり取りはJSONですることが多いですが、JSONが登場する前まではXMLというデータ構造が主に使われていました。
XMLはHTMLの記法を元にしたデータ定義方法で、データ定義言語と呼ばれています。
HTMLと同じようにタグを使ってデータの構造を定義し、柔軟に記述できるので(XMLよりも前に使われていた)CSVよりも複雑な構造も扱えました。しかし、その分人間にとって直感的には理解し難いのが難点でした。

XMLの例

<?xml version="1.0" encoding="utf-8"?>
<data>
  <item>
    <id>1</id>
    <name>tanaka</name>
  </item>
  <item>
    <id>2</id>
    <name>nakata</name>
  </item>
</data>

CSVの例

id,name
1,tanaka
2,nakata

一方、JSONはJavaScriptのオブジェクト記法で定義するので、慣れている人にとっては非常に分かりやすく感じます。

また、例えばPythonからJSONデータを送り、JavaScriptでそのままオブジェクトとして扱う、といった使い方が可能です。XMLだとXML構文を解析する必要がでてくるので、プログラムのパフォーマンスが低下するというデメリットもあります。

JSONの例

[
  {"id" : "1", "name" : "tanaka"},
  {"id" : "2", "name" : "nakata"}
]

最近のWeb開発にはJavaScriptが必ず必要になりました。この環境の変化もJSONが広く使われるようになった要因と言えるでしょう。

JSONの書き方

次に、JSONの書き方を見ていきましょう。
JavaScriptでオブジェクトを扱ったことがあるならそこまで複雑ではありませんし、使ったことがなくても今後JavaScriptを操作する上で役に立つので覚えておきましょう。

基本の書き方

JSONは {} の中にキーと値をコロンで区切って記述します。キーは必ずダブルクォーテーションで囲む必要があり、シングルクォーテーションだとエラーになります。

{“key” : “value”}

カンマで区切ると、キーと値の組み合わせを複数記述できます。

{“key1” : “value1”, “key2” : “value2”}

行数が多くなってくると読みにくくなってきます。その場合は改行とインデントを使いましょう。

{
    “key1” : “value1”,
    “key2” : “value2”,
    “key3” : “value3”
}

JSONが対応しているデータ型

JSONは次のデータ型に対応しています。

  • 文字列
  • 数値
  • null
  • bool値
  • オブジェクト
  • 配列

文字列

文字列はダブルクォーテーション(“)、バックスラッシュ(\)以外の文字であればなんでも使用できます(もちろん日本語もOK)。

{“name” : “tanaka”}

数値

数値はダブルクォーテーションで囲みません。ダブルクォーテーションで囲むと文字列扱いになるので注意が必要です。

{“id”, 1}

null

nullは全て小文字で指定します。

{“id” : null}

bool値

bool値(true or false)の指定も可能です。こちらも数値と同じくダブルクォーテーションは必要ありません。

{“a” : true, “b” : false}

オブジェクト

オブジェクトの中にオブジェクトを入れることもできます。これを「ネストする」と言います。ここまでくるとデータ構造っぽさが出てきます。

{
    "id": 1,
    "name": "tanaka",
    "attribute": {
        "gender": "male",
        "phone_number": "xxxxxxxxxxx",
        "birth": "1991/01/01"
    }
}

配列

オブジェクトの場合は {} を使いましたが、配列を使いたい場合は [] を使います。
配列内の要素はカンマで区切ることで複数入力できます。

{
    "id": 1,
    "name": "tanaka",
    "result": [
        87,
        83,
        71,
        59,
        91
    ]
}

JSONの使用例

最後に実際にJavaScript内でJSONを使ってみましょう。

JSON文字列をオブジェクトに変換したり、逆にオブジェクトをJSON文字列に再変換したりしてみます。まずはJSON文字列→オブジェクトから見ていきましょう。

JSON文字列 → オブジェクトへの変換

json_strがJSON文字列です。これをJSON.parse()に渡すことでオブジェクトに変換されます。あとは通常のオブジェクトの扱いと同じで、ドットで繋げながら取得したい要素にアクセスしています。次にオブジェクト→JSON文字列への変換を見ていきましょう。

JavaScriptコード

var json_str = '{"id":1, "name":"tanaka", "attribute":{"gender":"male", "phone_number":"xxxxxxxxxxx", "birth":"1991/01/01"}}';
var obj = JSON.parse(json_str)
console.log(obj.name)
console.log(obj.attribute.birth)

結果

tanaka
1991/01/01

オブジェクト → JSON文字列への変換

objはJavaScriptのオブジェクトです。これをJSON.stringify()に渡してJSON文字列に変換しています。typeofで型を見てみると、stringになっているのが分かります。
普段JavaScript内で使用するときはオブジェクトで良いですが、サーバサイドとデータのやり取りをしたい場合は文字列にして送ると非常に便利です。

JavaScriptコード

var obj = {"id":1, "name":"tanaka", "attribute":{"gender":"male", "phone_number":"xxxxxxxxxxx", "birth":"1991/01/01"}}
var json_str = JSON.stringify(obj)
console.log(json_str)
console.log(typeof json_str)

結果

{"id":1,"name":"tanaka","attribute":{"gender":"male","phone_number":"xxxxxxxxxxx","birth":"1991/01/01"}}
string

JSONを使うときの注意点

構文規則が厳密に決まっている

JSONは、非常に厳密な構文規則を持っています。

キーや値をダブルクオーテーションではなくシングルクオーテーションで囲んでいる、末尾のカンマが抜けているなど、表記上のわずかな誤りもエラーにつながります。正常にデータを読み込ませるためにはルールに確実に則った構文を記述する必要があります。

構文にミスがないか確認するために、アプリケーションやエディタ内の構文チェック機能を活用するとよいでしょう。

データ構造が複雑になりやすい

JSONは高い自由度でデータを作成できる点がメリットの一つですが、その分複雑な構造になりやすい点にも注意が必要です。入れ子や配列を使ってデータを複雑化すればするほどデータ処理の負荷が増え、処理時間が長くなる恐れがあります。

データ構造を複雑化しすぎないためには、データ構造を適切に設計し、可能な限りフラットに保つようにしましょう。

コメントの追加ができない

JSONでは、ファイル内に直接コメントを記載することができません。

可読性が高いフォーマットであっても、何の説明もされずJSONのデータを受け取ると、データの内容を理解するのに時間がかかってしまいます。そのため複数のメンバー間でやり取りをする場合は、データについての説明を別の方法で行う必要があります。

さいごに

JSONについて以下の通り解説してきました。
 ・JSONの特徴
 ・JSONとXMLの違い
 ・JSONの書き方
 ・JSONが対応しているデータ型
 ・JSONの使用例

プログラミングをしていれば必ず出会うデータフォーマット(JSON、XML、CSV、…)について、この機会に勉強してみてもいいかもしれませんね!

-----参考情報-----
■TV出演動画:ええじゃない課Biz(2022/05/29 放送 TOKYO MX)
アンタッチャブル柴田さん、アルコ&ピースさんがレギュラーのビジネス情報番組「ええじゃない課Biz」にて、プログラミングスキル判定サービス「TOPSIC」と企業・学校対抗プログラミングコンテスト「PG BATTLE」のご紹介をさせていただきました。



RELATED POST関連記事


RECENT POST「プログラミング」の最新記事


プログラミング

PostgreSQLとは?特徴やほかのデータベースとの違いを解説

プログラミング

アルゴリズムとは?意味や具体例、代表的なアルゴリズムの種類などを紹介

プログラミング

SQL Serverとは?メリットや種類、最新バージョンの確認方法など解説

プログラミング

【初心者向け】SQLとは?データベース言語の基礎知識から具体例まで分かりやすく解説

【初心者向け】JSONとは?データ形式の基礎や書き方、使用例などを解説

TOPSIC TOPへ