QJsonValue Class
QJsonValue クラスは、JSON 形式の値をカプセル化します。詳細...
| ヘッダー: | #include <QJsonValue> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QJsonValue は、Qt の JSON サポートおよび暗黙的に共有されるクラスの一部です。
注:このクラスのすべての関数は再入可能です。
QJsonValue の比較
| カテゴリ | 比較可能な型 |
|---|---|
| 等価性 | QJsonValue |
| 等価性 | QJsonValueConstRef およびQJsonValueRef 。 |
パブリック型
(since 6.9) | JsonFormat |
| enum | Type { Null, Bool, Double, String, Array, …, Undefined } |
パブリック関数
| QJsonValue(QJsonValue::Type type = Null) | |
| QJsonValue(QLatin1StringView s) | |
| QJsonValue(bool b) | |
| QJsonValue(const QJsonArray &a) | |
| QJsonValue(const QJsonObject &o) | |
| QJsonValue(const QString &s) | |
| QJsonValue(const char *s) | |
| QJsonValue(double v) | |
(since 6.3) | QJsonValue(QJsonArray &&a) |
(since 6.3) | QJsonValue(QJsonObject &&o) |
| QJsonValue(int v) | |
| QJsonValue(qint64 v) | |
| QJsonValue(const QJsonValue &other) | |
| QJsonValue(QJsonValue &&other) | |
| ~QJsonValue() | |
| bool | isArray() const |
| bool | isBool() const |
| bool | isDouble() const |
| bool | isNull() const |
| bool | isObject() const |
| bool | isString() const |
| bool | isUndefined() const |
| void | swap(QJsonValue &other) |
| QJsonArray | toArray(const QJsonArray &defaultValue) const |
| QJsonArray | toArray() const |
| bool | toBool(bool defaultValue = false) const |
| double | toDouble(double defaultValue = 0) const |
| int | toInt(int defaultValue = 0) const |
(since 6.0) qint64 | toInteger(qint64 defaultValue = 0) const |
(since 6.9) QByteArray | toJson(QJsonValue::JsonFormat format = JsonFormat::Indented) const |
| QJsonObject | toObject(const QJsonObject &defaultValue) const |
| QJsonObject | toObject() const |
| QString | toString() const |
| QString | toString(const QString &defaultValue) const |
(since 6.10) QAnyStringView | toStringView(QAnyStringView defaultValue = {}) const |
| QVariant | toVariant() const |
| QJsonValue::Type | type() const |
| QJsonValue & | operator=(QJsonValue &&other) |
| QJsonValue & | operator=(const QJsonValue &other) |
| const QJsonValue | operator[](const QString &key) const |
| const QJsonValue | operator[](qsizetype i) const |
| const QJsonValue | operator[](QLatin1StringView key) const |
| const QJsonValue | operator[](QStringView key) const |
静的パブリックメンバー
(since 6.9) QJsonValue | fromJson(QByteArrayView json, QJsonParseError *error = nullptr) |
| QJsonValue | fromVariant(const QVariant &variant) |
関連する非メンバー
| bool | operator!=(const QJsonValue &lhs, const QJsonValue &rhs) |
| bool | operator==(const QJsonValue &lhs, const QJsonValue &rhs) |
詳細な説明
JSON 内の値は、以下の 6 つの基本型のいずれかになります:
JSONは、構造化データを格納するためのフォーマットです。6つの基本データ型があります:
- boolQJsonValue::Bool
- doubleQJsonValue::Double
- stringQJsonValue::String
- arrayQJsonValue::Array
- objectQJsonValue::Object
- nullQJsonValue::Null
値は、上記のいずれかのデータ型を表すことができます。さらに、QJsonValue には、未定義の値を表すための特別なフラグが 1 つあります。これは、isUndefined() を使用して照会できます。
値の型は、type() またはisBool()、isString() などのアクセサを使用して取得できます。同様に、toBool()、toString() などを使用して、値を内部に格納されている型に変換することができます。
値は内部で厳密に型付けされており、QVariant とは異なり、暗黙的な型変換は行われません。これは、値に格納されていない型への変換を行うと、デフォルト構築された戻り値が返されることを意味します。
QJsonValueRef
QJsonValueRef は、QJsonArray およびQJsonObject のためのヘルパークラスです。QJsonValueRef 型のオブジェクトを取得した場合、それをQJsonValueへの参照であるかのように使用できます。これに代入を行うと、その代入は、参照を取得したQJsonArray またはQJsonObject 内の要素に対して適用されます。
以下のメソッドはQJsonValueRef を返します:
- QJsonArray::operator[](qsizetype i)
- QJsonObject::operator[](constQString & key) const
「Qt における JSON サポート」および「ゲームの保存と読み込み」も参照してください 。
メンバ型のドキュメント
[alias, since 6.9] QJsonValue::JsonFormat
QJsonDocument::JsonFormat と同じです。
この typedef は Qt 6.9 で導入されました。
enum QJsonValue::Type
この列挙型は、JSON値の型を表します。
| 定数 | 値 | 説明 |
|---|---|---|
QJsonValue::Null | 0x0 | Null 値 |
QJsonValue::Bool | 0x1 | ブール値。toBool() を使用して bool 型に変換します。 |
QJsonValue::Double | 0x2 | 数値。toDouble() を使用して double 型に変換するか、toInteger() を使用して qint64 型に変換してください。 |
QJsonValue::String | 0x3 | 文字列。toString() を使用してQString に変換します。 |
QJsonValue::Array | 0x4 | 配列。toArray() を使用してQJsonArray に変換します。 |
QJsonValue::Object | 0x5 | オブジェクト。toObject() を使用して、QJsonObject 型に変換します。 |
QJsonValue::Undefined | 0x80 | 値が未定義です。これは通常、配列の範囲外の値や、オブジェクトに存在しないキーを読み込もうとした際のエラー状態として返されます。 |
メンバ関数のドキュメント
QJsonValue::QJsonValue(QJsonValue::Type type = Null)
type 型のQJsonValueを作成します。
デフォルトでは、Null値が作成されます。
QJsonValue::QJsonValue(QLatin1StringView s)
s によって解釈されたLatin-1文字列を含む、String型の値を作成します。
QJsonValue::QJsonValue(bool b)
Bool 型の値を、値が `b` となるように作成します。
QJsonValue::QJsonValue(const QJsonArray &a)
a という値を持つArray型のオブジェクトを作成します。
QJsonValue::QJsonValue(const QJsonObject &o)
o という値を持つObject型のオブジェクトを作成します。
QJsonValue::QJsonValue(const QString &s)
s という値を持つ String 型の変数を作成します。
QJsonValue::QJsonValue(const char *s)
入力がUTF-8エンコーディングであると仮定して、値がs であるString型のオブジェクトを作成します。
アプリケーションのコンパイル時に `QT_NO_CAST_FROM_ASCII ` を定義することで、このコンストラクタを無効にすることができます。
QJsonValue::QJsonValue(double v)
v という値を持つDouble型の変数を作成します。
[noexcept, since 6.3] QJsonValue::QJsonValue(QJsonArray &&a)
これはオーバーロードされた関数です。
この関数は Qt 6.3 で導入されました。
[noexcept, since 6.3] QJsonValue::QJsonValue(QJsonObject &&o)
これはオーバーロードされた関数です。
この関数は Qt 6.3 で導入されました。
QJsonValue::QJsonValue(int v)
v という値を持つDouble型の値を作成します。
これはオーバーロードされた関数です。
QJsonValue::QJsonValue(qint64 v)
v の値を持つ Double 型の値を作成します。
これは内部的に 64 ビット整数として格納されるため、toInteger() を使用して取得する限り、完全な精度が保持されます。ただし、toDouble() を使用して値を取得すると、その値が ±2^53 の範囲内にある場合を除き、精度が失われます。
これはオーバーロードされた関数です。
toInteger() およびtoDouble()も参照してください 。
[noexcept] QJsonValue::QJsonValue(const QJsonValue &other)
other のコピーを作成します。
[noexcept] QJsonValue::QJsonValue(QJsonValue &&other)
other から QJsonValue をムーブコンストラクトで生成します。
[noexcept] QJsonValue::~QJsonValue()
価値を台無しにする。
[static, since 6.9] QJsonValue QJsonValue::fromJson(QByteArrayView json, QJsonParseError *error = nullptr)
json を UTF-8 エンコードされた JSON 値として解析し、そこからQJsonValue を作成します。
解析に成功した場合、有効なQJsonValue を返します。失敗した場合は、undefined が返され、オプションのerror 変数にエラーに関する詳細情報が格納されます。
この関数は Qt 6.9 で導入されました。
QJsonParseError 、isUndefined()、およびtoJson()も参照してください 。
[static] QJsonValue QJsonValue::fromVariant(const QVariant &variant)
variant をQJsonValue に変換し、それを返します。
この変換では、QVariant の型が次のように変換されます:
| ソース型 | 変換後の型 |
|---|---|
| QJsonValue::Null | |
| QJsonValue::Bool | |
| QJsonValue::Double | |
| QJsonValue::String | |
| QJsonValue::Array | |
| QJsonValue::Object | |
| QJsonValue::String。この変換では、URLの解析において最大限の互換性を確保するため、フラグQUrl::FullyEncoded を指定したQUrl::toString()を使用します | |
| QJsonValue::String。Qt 5.11 以降、結果の文字列には中括弧は含まれません | |
| QCborValue::toJsonValue() がどの型を返しても同様です。 | |
| QJsonValue::Array。変換に関する制限については、QCborValue::toJsonValue() を参照してください。 | |
| QJsonValue::Map。変換の制限およびマップキーの「文字列化」については、QCborValue::toJsonValue() を参照してください。 |
情報の損失およびその他の型
QVariant は、JSON で表現できる以上の情報を保持している場合があります。QVariant が上記の型のいずれでもない場合、変換は保証されず、UUID の場合と同様に、Qt の将来のバージョンで変更される可能性があります。コードでは、上記に挙げた型以外の型を使用しないように努めるべきです。
QVariant::isNull()がtrueを返す場合、QVariant が持つ型に関係なく、nullのQJsonValue が返されるか、リストまたはオブジェクトに挿入されます。Qt 6.0におけるQVariant::isNull()に影響する動作の変更が、この関数にも影響することに注意してください。
無限大またはNaNである浮動小数点値は、nullのJSON値に変換されます。Qt 6.0以降、QJsonValue は64ビットの符号付き整数の完全な精度を損失なく格納できますが、以前のバージョンでは、±2^53の範囲外の値は精度が失われる可能性があります。 2^63 以上の符号なし 64 ビット値は、精度が失われるか、負の値にエイリアスされるため、QMetaType::ULongLong の使用は避けるべきです。
上記に記載されていないその他の型については、文字列への変換が試みられます。通常はQVariant::toString() が呼び出されますが、常にそうであるとは限りません。変換に失敗した場合、その値は null の JSON 値に置き換えられます。 なお、QVariant::toString() も、ほとんどの型において非可逆な変換となります。例えば、渡された `QVariant ` が生のバイト配列データを表している場合、事前にBase64(またはその他の可逆エンコーディング)でエンコードしておくことを推奨します。そうしないと、QString::fromUtf8() による非可逆な変換が行われてしまいます。
QVariant::toString() による変換は、いつでも変更される可能性があることにご注意ください。QVariant とQJsonValue の両方は、将来的により多くの型をサポートするように拡張される可能性があり、その結果、この関数による変換の仕組みが変更されることになります。
toVariant() およびQCborValue::fromVariant()も参照してください 。
bool QJsonValue::isArray() const
値に配列が含まれている場合、true を返します。
toArray()も参照してください 。
bool QJsonValue::isBool() const
値にブール値が含まれている場合、true を返します。
toBool()も参照してください 。
bool QJsonValue::isDouble() const
値にdouble型が含まれている場合、true を返します。
toDouble()も参照してください 。
bool QJsonValue::isNull() const
値がnullの場合、true を返します。
bool QJsonValue::isObject() const
値にオブジェクトが含まれている場合、true を返します。
toObject()も参照してください 。
bool QJsonValue::isString() const
値に文字列が含まれている場合、true を返します。
toString()も参照してください 。
bool QJsonValue::isUndefined() const
値が未定義の場合、true を返します。これは、例えば `QJsonObject` 内で存在しないキーにアクセスするなど、特定のエラーが発生した場合に起こり得ます。
[noexcept] void QJsonValue::swap(QJsonValue &other)
この値をother と入れ替えます。この操作は非常に高速で、失敗することはありません。
QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const
値を配列に変換して返します。
type() の結果が Array でない場合、defaultValue が返されます。
QJsonArray QJsonValue::toArray() const
値を配列に変換して返します。
type() が Array でない場合、QJsonArray() が返されます。
これはオーバーロードされた関数です。
bool QJsonValue::toBool(bool defaultValue = false) const
値をbool型に変換して返します。
type() の戻り値が bool 型でない場合、defaultValue が返されます。
double QJsonValue::toDouble(double defaultValue = 0) const
値をdouble型に変換して返します。
type() が Double 型でない場合、defaultValue が返されます。
int QJsonValue::toInt(int defaultValue = 0) const
値をint型に変換して返します。
type() が Double 型でない場合、または値が整数でない場合、defaultValue が返されます。
[since 6.0] qint64 QJsonValue::toInteger(qint64 defaultValue = 0) const
値を整数に変換して返します。
type() が Double 型でない場合、またはその値が qint64 で表現可能な整数でない場合、defaultValue が返されます。
この関数は Qt 6.0 で導入されました。
[since 6.9] QByteArray QJsonValue::toJson(QJsonValue::JsonFormat format = JsonFormat::Indented) const
QJsonValue を、指定されたformat 内のUTF-8エンコードされたJSON値に変換します。
この関数は Qt 6.9 で導入されました。
fromJson() およびJsonFormatも参照してください 。
QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const
値をオブジェクトに変換して返します。
type() の結果が Object でない場合、defaultValue が返されます。
QJsonObject QJsonValue::toObject() const
値をオブジェクトに変換して返します。
type() の結果が Object でない場合、QJsonObject() が返されます。
これはオーバーロードされた関数です。
QString QJsonValue::toString() const
値をQString 型に変換し、それを返します。
type() の値が String でない場合、null のQString が返されます。
QString::isNull()も参照してください 。
QString QJsonValue::toString(const QString &defaultValue) const
値をQString 型に変換し、それを返します。
type() の戻り値が String でない場合、defaultValue が返されます。
toStringView()も参照してください 。
[since 6.10] QAnyStringView QJsonValue::toStringView(QAnyStringView defaultValue = {}) const
このQJsonValue に格納されている文字列値を返します(その値がstring 型の場合)。それ以外の場合は、defaultValue を返します。QJsonValue は文字列をUS-ASCII、UTF-8、またはUTF-16のいずれかで格納するため、返されるQAnyStringView はこれらのエンコーディングのいずれかになる可能性があります。
この関数はメモリを割り当てません。戻り値は、このオブジェクトに対して非constメンバー関数が次に呼び出されるまで有効です。このオブジェクトがスコープ外になった場合、戻り値は親のJSONオブジェクトまたは配列に対して非constメンバー関数が次に呼び出されるまで有効です。
この関数は Qt 6.10 で導入されました。
toString()も参照してください 。
QVariant QJsonValue::toVariant() const
値をQVariant()に変換します。
QJsonValue の各型は、次のように変換されます:
| 定数 | 説明 |
|---|---|
Null | QMetaType::Nullptr |
Bool | QMetaType::Bool |
Double | QMetaType::Double またはQMetaType::LongLong |
String | QString |
Array | QVariantList |
Object | QVariantMap |
Undefined | QVariant() |
「fromVariant()」も参照してください 。
QJsonValue::Type QJsonValue::type() const
値の型を返します。
QJsonValue::Typeも参照してください 。
[noexcept] QJsonValue &QJsonValue::operator=(QJsonValue &&other)
other にこの値を代入します。
[noexcept] QJsonValue &QJsonValue::operator=(const QJsonValue &other)
other に格納されている値を、このオブジェクトに代入します。
const QJsonValue QJsonValue::operator[](const QString &key) const
キー `key` の値を表す `QJsonValue ` を返します。
toObject().value(key) を呼び出すのと同じです。
キーが存在しない場合、またはisObject()がfalseの場合、返されるQJsonValue はQJsonValue::Undefined となります。
QJsonValue 、QJsonValue::isUndefined()、およびQJsonObjectも参照してください 。
const QJsonValue QJsonValue::operator[](qsizetype i) const
インデックスi の値を表すQJsonValue を返します。
toArray().at(i) を呼び出すのと同じです。
i が範囲外の場合、またはisArray()がfalseの場合、返されるQJsonValue はQJsonValue::Undefined となります。
QJsonValue 、QJsonValue::isUndefined()、およびQJsonArrayも参照してください 。
const QJsonValue QJsonValue::operator[](QLatin1StringView key) const
これはオーバーロードされた関数です。
const QJsonValue QJsonValue::operator[](QStringView key) const
これはオーバーロードされた関数です。
関連する非メンバー
[noexcept] bool operator!=(const QJsonValue &lhs, const QJsonValue &rhs)
lhs の値がrhs の値と等しくない場合はtrue を返し、それ以外の場合はfalse を返します。
[noexcept] bool operator==(const QJsonValue &lhs, const QJsonValue &rhs)
lhs の値がrhs の値と等しい場合はtrue を返し、それ以外の場合はfalse を返します。
© 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.