CodeGym /Java Course /Python SELF JA /JSONとの出会い

JSONとの出会い

Python SELF JA
レベル 23 , レッスン 0
使用可能

1.1 JSONの誕生

JSON (JavaScript Object Notation) はデータ交換用のテキストフォーマットだよ。これは2000年代の初めにDouglas Crockfordによって開発され、そのシンプルさと使いやすさで人気になったんだ。

JSONの主なアイデアは、人間が読みやすく、プログラムが簡単に解析し生成できるフォーマットを作ることだったんだよ。JSONは元々JavaScriptの構文に基づいて開発されたけど、そのフォーマットはとっても汎用的で、他の多くのプログラミング言語でも使われるようになったんだ。今ではJavaScriptとは独立にJSONを利用できるようになってて、いろんなシステムやアプリケーション間のデータ交換の標準となっているんだよ。

JSONはJavaScriptでのオブジェクトの状態の記録に近いものなんだ、まあほぼって感じ。だから、JSONはフロントエンドのAPIを書く人たちの間で特に人気なんだよ。さらに、JSONは設定ファイルやログの保存にも広く使われているんだ。

JSONの主な特徴

人間に優しい読みやすさ:

JSONのフォーマットは人間が読みやすく、理解しやすいんだ。これが設定ファイルやクライアントとサーバー間のデータ交換に便利である理由だよ。

言語に依存しない:

JSONは元々JavaScriptの構文に基づいているけど、どんなプログラミング言語でも使うことができるんだ。多くのプログラミング言語はJSONを扱うための組み込みライブラリを提供しているからね。

パースのしやすさ:

パース(parsing)は、データ、特にテキストやコードの構造を解析して、有意義な情報を抜き出すプロセスのことなんだ。プログラミングの文脈では、テキストデータの処理にパースがよく使われるよ。 JSONはクライアント側とサーバー側のどちらでも簡単にパースして生成できるんだ。今ではどのプログラミング言語にも、オブジェクトをJSONに変換したりその逆を行うためのライブラリが存在するんだよ。

標準であり明らかなリーダー:

10年前、JSONはXMLとAPIの標準をかけて競争していたんだ。でも今、JSONは勝利して、明確なリーダーとなっているんだよ。バックエンドAPIではJSONだけをサポートしていれば十分だし、他のサーバーからAPIが呼び出されても問題ないんだ。

1.2 JSONの構造

JSONは「キーと値」のペアの集合を表してて、その構文は2つの基本構造から成り立ってるんだ:

オブジェクト: オブジェクトは「キーと値」のペアの非順序集合を表しているよ。キーは文字列で、値はJSONがサポートするどんなデータ型でもいいんだ。


{
    "name": "John",
    "age": 30,
    "isStudent": false,
    "courses": ["Math", "Science"],
    "address": {
        "city": "New York",
        "zipCode": "10001"
    }
}

配列/リスト: 配列は順序付きの値のセットを表してるよ(Pythonのリストに似てるね)。値はJSONがサポートするどんなデータ型でもOKだよ。


["Apple", "Banana", "Cherry", 100, 3.14, true]

Pythonのオブジェクトにすごく似てるでしょ?

JSONは実際にはJavaScriptのデータ記録の標準だから、JavaScriptはかつてPythonにインスパイアされてたんだよ。だから、JSONを使うのが好きになると思うよ。

1.3 JSONのデータ型

JSONは次のデータ型をサポートしているよ:

文字列: ダブルクォートで表されるんだ。


"name": "John"

数値: 整数でも浮動小数点数でもOKだよ。


"age": 30

オブジェクト: 「キーと値」の非順序集合だよ。


"address": {
    "city": "New York",
    "zipCode": "10001"
}

配列/リスト: 順序付きの値の集合だよ。


"courses": ["Math", "Science"]

ブール値: true または falseだよ。


"isStudent": false

Pythonとは違って、truefalse は小文字で書かれるんだ。

null: 空の値を表すんだ。


"middleName": null

日付と時間: 文字列として渡されるよ。


{
    "datetime": "2023-05-15T14:30:00Z",
    "date": "2023-05-15",
    "time": "14:30:00"
}

以前はUNIXタイムスタンプ形式の数値として渡されることもあったけど、今は過去の話だね。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION