このページでは

Qt における JSON のサポート

Qt は JSON データの処理をサポートしています。JSON は JavaScript に由来するオブジェクトデータをエンコードするための形式ですが、現在ではインターネット上のデータ交換形式として広く使用されています。

Qt の JSON サポートは、JSON データの解析、変更、保存を行うための使いやすい C++ API を提供します。

JSON データ形式の詳細については、json.orgおよびRFC 8259 を参照してください。

概要

JSONは、構造化データを格納するための形式です。6つの基本データ型があります:

  • bool
  • double
  • string
  • array
  • object
  • null

値は、上記のいずれかの型をとることができます。ブール値は、JSON では文字列「true」または「false」で表されます。JSON では数値の有効範囲が明示的に規定されていませんが、Qt でのサポートは double の有効範囲および精度に限定されています。 文字列は、有効な Unicode 文字列であれば何でも使用できます。配列は値のリストであり、オブジェクトはキーと値のペアの集合です。オブジェクト内のすべてのキーは文字列であり、オブジェクトには重複するキーを含めることはできません。

JSONのテキスト表現では、配列は角括弧 ([ ... ]) で、オブジェクトは中括弧 ({ ... }) で囲まれます。配列やオブジェクト内の要素はコンマで区切られます。オブジェクト内のキーと値の区切り文字はコロン (:) です。

人物、その年齢、住所、電話番号をエンコードした単純なJSONドキュメントは、次のようなものになります。

{
    "FirstName": "John",
    "LastName": "Doe",
    "Age": 43,
    "Address": {
        "Street": "Downing Street 10",
        "City": "London",
        "Country": "Great Britain"
    },
    "Phone numbers": [
        "+44 1234567",
        "+44 2345678"
    ]
}

上記の例は、5つのキー/値ペアを持つオブジェクトで構成されています。値のうち2つは文字列、1つは数値、1つは別のオブジェクト、そして最後の1つは配列です。

有効なJSONドキュメントは配列かオブジェクトのいずれかであるため、ドキュメントは常に角括弧または中括弧で始まります。

JSONクラス

すべてのJSONクラスは、値ベースの暗黙的に共有されるクラスです。

QtにおけるJSONのサポートは、以下のクラスで構成されています:

「ゲームの保存と読み込み」も参照してください 。

QJsonArray

JSON配列をカプセル化します

QJsonDocument

JSONドキュメントの読み書きを行う方法

QJsonObject

JSONオブジェクトをカプセル化します

QJsonObject::const_iterator

QJsonObject::const_iterator クラスは、QJsonObject 用の STL スタイルの const イテレータを提供します

QJsonObject::iterator

QJsonObject::iterator クラスは、QJsonObject 用の STL スタイルの非 const イテレータを提供します

QJsonParseError

JSONの解析中にエラーを報告するために使用されます

QJsonValue

JSON内の値をカプセル化します

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.