OpenSiv3D  v0.6.5
C++20 framework for creative coding
s3d::JSON Class Reference

JSON 形式のデータの読み書き More...

#include <JSON.hpp>

Public Types

using iterator = JSONIterator
 
using const_iterator = JSONConstIterator
 

Public Member Functions

SIV3D_NODISCARD_CXX20 JSON ()
 
SIV3D_NODISCARD_CXX20 JSON (std::shared_ptr< detail::JSONDetail > &&detail)
 
SIV3D_NODISCARD_CXX20 JSON (std::nullptr_t)
 
SIV3D_NODISCARD_CXX20 JSON (const JSON &)=default
 
SIV3D_NODISCARD_CXX20 JSON (JSON &&)=default
 
SIV3D_NODISCARD_CXX20 JSON (const std::initializer_list< std::pair< String, JSON >> &list)
 
SIV3D_NODISCARD_CXX20 JSON (const Array< JSON > &array)
 
template<class Type , std::enable_if_t<!std::is_same_v< std::decay_t< Type >, JSON > &&std::is_constructible_v< JSON, Type >> * = nullptr>
SIV3D_NODISCARD_CXX20 JSON (const Array< Type > &arr)
 
template<class Type , std::enable_if_t< std::is_constructible_v< JSON, Type >> * = nullptr>
SIV3D_NODISCARD_CXX20 JSON (const std::initializer_list< Type > &list)
 
SIV3D_NODISCARD_CXX20 JSON (StringView value)
 
template<class StringViewish , std::enable_if_t< std::is_constructible_v< StringView, StringViewish >> * = nullptr>
SIV3D_NODISCARD_CXX20 JSON (const StringViewish &value)
 
SIV3D_NODISCARD_CXX20 JSON (int64 value)
 
SIV3D_NODISCARD_CXX20 JSON (uint64 value)
 
SIV3D_NODISCARD_CXX20 JSON (double value)
 
SIV3D_NODISCARD_CXX20 JSON (bool value)
 
SIV3D_CONCEPT_SIGNED_INTEGRAL SIV3D_NODISCARD_CXX20 JSON (SignedInt value)
 
SIV3D_CONCEPT_UNSIGNED_INTEGRAL SIV3D_NODISCARD_CXX20 JSON (UnsignedInt value)
 
SIV3D_CONCEPT_FLOATING_POINT SIV3D_NODISCARD_CXX20 JSON (Float value)
 
template<class Type , std::enable_if_t<!std::is_constructible_v< StringView, Type > &&!std::is_arithmetic_v< Type >> * = nullptr>
SIV3D_NODISCARD_CXX20 JSON (const Type &value)
 
JSONoperator= (std::nullptr_t)
 
JSONoperator= (const JSON &value)
 
JSONoperator= (const std::initializer_list< std::pair< String, JSON >> &list)
 
JSONoperator= (const Array< JSON > &array)
 
template<class Type , std::enable_if_t<!std::is_same_v< std::decay_t< Type >, JSON > &&std::is_constructible_v< JSON, Type >> * = nullptr>
JSONoperator= (const Array< Type > &arr)
 
template<class Type , std::enable_if_t< std::is_constructible_v< JSON, Type >> * = nullptr>
JSONoperator= (const std::initializer_list< Type > &list)
 
JSONoperator= (StringView value)
 
template<class StringViewish , std::enable_if_t< std::is_constructible_v< StringView, StringViewish >> * = nullptr>
JSONoperator= (const StringViewish &value)
 
JSONoperator= (int64 value)
 
JSONoperator= (uint64 value)
 
JSONoperator= (double value)
 
JSONoperator= (bool value)
 
SIV3D_CONCEPT_SIGNED_INTEGRAL JSONoperator= (SignedInt value)
 
SIV3D_CONCEPT_UNSIGNED_INTEGRAL JSONoperator= (UnsignedInt value)
 
SIV3D_CONCEPT_FLOATING_POINT JSONoperator= (Float value)
 
template<class Type , std::enable_if_t<!std::is_constructible_v< StringView, Type > &&!std::is_arithmetic_v< Type >> * = nullptr, class = decltype(Formatter(std::declval<FormatData&>(), std::declval<Type>()))>
JSONoperator= (const Type &value)
 
bool operator== (const JSON &other) const
 
bool operator!= (const JSON &other) const
 
bool isEmpty () const
 
 operator bool () const
 
bool isNull () const
 
bool isBool () const
 
bool isNumber () const
 
bool isInteger () const
 
bool isUnsigned () const
 
bool isFloat () const
 
bool isString () const
 
bool isArray () const
 
bool isObject () const
 
JSONValueType getType () const
 
bool hasElement (StringView name) const
 
String getString () const
 
template<class Type >
Type get () const
 
template<class Type , class U >
Type getOr (U &&defaultValue) const
 
template<class Type >
Optional< Type > getOpt () const
 
JSON operator[] (StringView name)
 
const JSON operator[] (StringView name) const
 
JSON operator[] (size_t index)
 
const JSON operator[] (size_t index) const
 
JSON access (StringView jsonPointer)
 
const JSON access (StringView jsonPointer) const
 
void push_back (const JSON &value)
 
void clear () const
 
void erase (StringView name)
 
void erase (size_t index)
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
JSONArrayView arrayView () const
 
size_t size () const
 
String format (char32 space=U' ', size_t spaceCount=2) const
 JSON データを文字列にフォーマットした結果を返します。 More...
 
String formatMinimum () const
 
std::string formatUTF8 (char32 space=U' ', size_t spaceCount=2) const
 
std::string formatUTF8Minimum () const
 
bool save (FilePathView path) const
 JSON データをファイルに保存します。 More...
 
bool saveMinimum (FilePathView path) const
 JSON データを、不要なスペースを消したコンパクトな形式でファイルに保存します。 More...
 
Blob toBSON () const
 BSON 形式にシリアライズした結果を返します。 More...
 
Blob toCBOR () const
 CBOR 形式にシリアライズした結果を返します。 More...
 
Blob toMessagePack () const
 MessagePack 形式にシリアライズした結果を返します。 More...
 

Static Public Member Functions

static JSON Invalid ()
 
static JSON Load (FilePathView path, AllowExceptions allowExceptions=AllowExceptions::No)
 JSON ファイルをパースして JSON オブジェクトを返します。 More...
 
template<class Reader , std::enable_if_t< std::is_base_of_v< IReader, Reader >> * = nullptr>
static JSON Load (Reader &&reader, AllowExceptions allowExceptions=AllowExceptions::No)
 
static JSON Load (std::unique_ptr< IReader > &&reader, AllowExceptions allowExceptions=AllowExceptions::No)
 
static JSON Parse (StringView str, AllowExceptions allowExceptions=AllowExceptions::No)
 JSON 文字列をパースして JSON オブジェクトを返します。 More...
 
static JSON FromBSON (const Blob &bson, AllowExceptions allowExceptions=AllowExceptions::No)
 BSON 形式のデータから JSON オブジェクトをデシリアライズします。 More...
 
static JSON FromCBOR (const Blob &cbor, AllowExceptions allowExceptions=AllowExceptions::No)
 CBOR 形式のデータから JSON オブジェクトをデシリアライズします。 More...
 
static JSON FromMessagePack (const Blob &msgpack, AllowExceptions allowExceptions=AllowExceptions::No)
 MessagePack 形式のデータから JSON オブジェクトをデシリアライズします。 More...
 

Friends

void Formatter (FormatData &formatData, const JSON &value)
 

Detailed Description

JSON 形式のデータの読み書き

Member Typedef Documentation

◆ const_iterator

◆ iterator

Constructor & Destructor Documentation

◆ JSON() [1/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( )

◆ JSON() [2/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( std::shared_ptr< detail::JSONDetail > &&  detail)

◆ JSON() [3/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( std::nullptr_t  )

◆ JSON() [4/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( const JSON )
default

◆ JSON() [5/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( JSON &&  )
default

◆ JSON() [6/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( const std::initializer_list< std::pair< String, JSON >> &  list)

◆ JSON() [7/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( const Array< JSON > &  array)

◆ JSON() [8/19]

template<class Type , std::enable_if_t<!std::is_same_v< std::decay_t< Type >, JSON > &&std::is_constructible_v< JSON, Type >> * = nullptr>
SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( const Array< Type > &  arr)

◆ JSON() [9/19]

template<class Type , std::enable_if_t< std::is_constructible_v< JSON, Type >> * = nullptr>
SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( const std::initializer_list< Type > &  list)

◆ JSON() [10/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( StringView  value)

◆ JSON() [11/19]

template<class StringViewish , std::enable_if_t< std::is_constructible_v< StringView, StringViewish >> * = nullptr>
SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( const StringViewish &  value)

◆ JSON() [12/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( int64  value)

◆ JSON() [13/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( uint64  value)

◆ JSON() [14/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( double  value)

◆ JSON() [15/19]

SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( bool  value)

◆ JSON() [16/19]

SIV3D_CONCEPT_SIGNED_INTEGRAL SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( SignedInt  value)

◆ JSON() [17/19]

SIV3D_CONCEPT_UNSIGNED_INTEGRAL SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( UnsignedInt  value)

◆ JSON() [18/19]

SIV3D_CONCEPT_FLOATING_POINT SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( Float  value)

◆ JSON() [19/19]

template<class Type , std::enable_if_t<!std::is_constructible_v< StringView, Type > &&!std::is_arithmetic_v< Type >> * = nullptr>
SIV3D_NODISCARD_CXX20 s3d::JSON::JSON ( const Type &  value)

Member Function Documentation

◆ access() [1/2]

JSON s3d::JSON::access ( StringView  jsonPointer)

◆ access() [2/2]

const JSON s3d::JSON::access ( StringView  jsonPointer) const

◆ arrayView()

JSONArrayView s3d::JSON::arrayView ( ) const

◆ begin() [1/2]

iterator s3d::JSON::begin ( )

◆ begin() [2/2]

const_iterator s3d::JSON::begin ( ) const

◆ clear()

void s3d::JSON::clear ( ) const

◆ end() [1/2]

iterator s3d::JSON::end ( )

◆ end() [2/2]

const_iterator s3d::JSON::end ( ) const

◆ erase() [1/2]

void s3d::JSON::erase ( size_t  index)

◆ erase() [2/2]

void s3d::JSON::erase ( StringView  name)

◆ format()

String s3d::JSON::format ( char32  space = U' ',
size_t  spaceCount = 2 
) const

JSON データを文字列にフォーマットした結果を返します。

Parameters
spaceインデントの文字
spaceCountインデントの文字数
Returns
フォーマットした結果

◆ formatMinimum()

String s3d::JSON::formatMinimum ( ) const

◆ formatUTF8()

std::string s3d::JSON::formatUTF8 ( char32  space = U' ',
size_t  spaceCount = 2 
) const

◆ formatUTF8Minimum()

std::string s3d::JSON::formatUTF8Minimum ( ) const

◆ FromBSON()

static JSON s3d::JSON::FromBSON ( const Blob bson,
AllowExceptions  allowExceptions = AllowExceptions::No 
)
static

BSON 形式のデータから JSON オブジェクトをデシリアライズします。

Parameters
bsonBSON データ
allowExceptions例外を発生させるか
Returns
JSON オブジェクト

◆ FromCBOR()

static JSON s3d::JSON::FromCBOR ( const Blob cbor,
AllowExceptions  allowExceptions = AllowExceptions::No 
)
static

CBOR 形式のデータから JSON オブジェクトをデシリアライズします。

Parameters
cborCBOR データ
allowExceptions例外を発生させるか
Returns
JSON オブジェクト

◆ FromMessagePack()

static JSON s3d::JSON::FromMessagePack ( const Blob msgpack,
AllowExceptions  allowExceptions = AllowExceptions::No 
)
static

MessagePack 形式のデータから JSON オブジェクトをデシリアライズします。

Parameters
msgpackMessagePack データ
allowExceptions例外を発生させるか
Returns
JSON オブジェクト

◆ get()

template<class Type >
Type s3d::JSON::get ( ) const

◆ getOpt()

template<class Type >
Optional<Type> s3d::JSON::getOpt ( ) const

◆ getOr()

template<class Type , class U >
Type s3d::JSON::getOr ( U &&  defaultValue) const

◆ getString()

String s3d::JSON::getString ( ) const

◆ getType()

JSONValueType s3d::JSON::getType ( ) const

◆ hasElement()

bool s3d::JSON::hasElement ( StringView  name) const

◆ Invalid()

static JSON s3d::JSON::Invalid ( )
static

◆ isArray()

bool s3d::JSON::isArray ( ) const

◆ isBool()

bool s3d::JSON::isBool ( ) const

◆ isEmpty()

bool s3d::JSON::isEmpty ( ) const

◆ isFloat()

bool s3d::JSON::isFloat ( ) const

◆ isInteger()

bool s3d::JSON::isInteger ( ) const

◆ isNull()

bool s3d::JSON::isNull ( ) const

◆ isNumber()

bool s3d::JSON::isNumber ( ) const

◆ isObject()

bool s3d::JSON::isObject ( ) const

◆ isString()

bool s3d::JSON::isString ( ) const

◆ isUnsigned()

bool s3d::JSON::isUnsigned ( ) const

◆ Load() [1/3]

static JSON s3d::JSON::Load ( FilePathView  path,
AllowExceptions  allowExceptions = AllowExceptions::No 
)
static

JSON ファイルをパースして JSON オブジェクトを返します。

Parameters
pathファイルパス
allowExceptions例外を発生させるか
Returns
JSON オブジェクト

◆ Load() [2/3]

template<class Reader , std::enable_if_t< std::is_base_of_v< IReader, Reader >> * = nullptr>
static JSON s3d::JSON::Load ( Reader &&  reader,
AllowExceptions  allowExceptions = AllowExceptions::No 
)
static

◆ Load() [3/3]

static JSON s3d::JSON::Load ( std::unique_ptr< IReader > &&  reader,
AllowExceptions  allowExceptions = AllowExceptions::No 
)
static

◆ operator bool()

s3d::JSON::operator bool ( ) const
explicit

◆ operator!=()

bool s3d::JSON::operator!= ( const JSON other) const

◆ operator=() [1/16]

JSON& s3d::JSON::operator= ( bool  value)

◆ operator=() [2/16]

JSON& s3d::JSON::operator= ( const Array< JSON > &  array)

◆ operator=() [3/16]

template<class Type , std::enable_if_t<!std::is_same_v< std::decay_t< Type >, JSON > &&std::is_constructible_v< JSON, Type >> * = nullptr>
JSON& s3d::JSON::operator= ( const Array< Type > &  arr)

◆ operator=() [4/16]

JSON& s3d::JSON::operator= ( const JSON value)

◆ operator=() [5/16]

JSON& s3d::JSON::operator= ( const std::initializer_list< std::pair< String, JSON >> &  list)

◆ operator=() [6/16]

template<class Type , std::enable_if_t< std::is_constructible_v< JSON, Type >> * = nullptr>
JSON& s3d::JSON::operator= ( const std::initializer_list< Type > &  list)

◆ operator=() [7/16]

template<class StringViewish , std::enable_if_t< std::is_constructible_v< StringView, StringViewish >> * = nullptr>
JSON& s3d::JSON::operator= ( const StringViewish &  value)

◆ operator=() [8/16]

template<class Type , std::enable_if_t<!std::is_constructible_v< StringView, Type > &&!std::is_arithmetic_v< Type >> * = nullptr, class = decltype(Formatter(std::declval<FormatData&>(), std::declval<Type>()))>
JSON& s3d::JSON::operator= ( const Type &  value)

◆ operator=() [9/16]

JSON& s3d::JSON::operator= ( double  value)

◆ operator=() [10/16]

SIV3D_CONCEPT_FLOATING_POINT JSON& s3d::JSON::operator= ( Float  value)

◆ operator=() [11/16]

JSON& s3d::JSON::operator= ( int64  value)

◆ operator=() [12/16]

SIV3D_CONCEPT_SIGNED_INTEGRAL JSON& s3d::JSON::operator= ( SignedInt  value)

◆ operator=() [13/16]

JSON& s3d::JSON::operator= ( std::nullptr_t  )

◆ operator=() [14/16]

JSON& s3d::JSON::operator= ( StringView  value)

◆ operator=() [15/16]

JSON& s3d::JSON::operator= ( uint64  value)

◆ operator=() [16/16]

SIV3D_CONCEPT_UNSIGNED_INTEGRAL JSON& s3d::JSON::operator= ( UnsignedInt  value)

◆ operator==()

bool s3d::JSON::operator== ( const JSON other) const

◆ operator[]() [1/4]

JSON s3d::JSON::operator[] ( size_t  index)

◆ operator[]() [2/4]

const JSON s3d::JSON::operator[] ( size_t  index) const

◆ operator[]() [3/4]

JSON s3d::JSON::operator[] ( StringView  name)

◆ operator[]() [4/4]

const JSON s3d::JSON::operator[] ( StringView  name) const

◆ Parse()

static JSON s3d::JSON::Parse ( StringView  str,
AllowExceptions  allowExceptions = AllowExceptions::No 
)
static

JSON 文字列をパースして JSON オブジェクトを返します。

Parameters
str文字列
allowExceptions例外を発生させるか
Returns
JSON オブジェクト

◆ push_back()

void s3d::JSON::push_back ( const JSON value)

◆ save()

bool s3d::JSON::save ( FilePathView  path) const

JSON データをファイルに保存します。

Parameters
pathファイルパス
Returns
保存に成功した場合 true, それ以外の場合は false

◆ saveMinimum()

bool s3d::JSON::saveMinimum ( FilePathView  path) const

JSON データを、不要なスペースを消したコンパクトな形式でファイルに保存します。

Parameters
pathファイルパス
Returns
保存に成功した場合 true, それ以外の場合は false

◆ size()

size_t s3d::JSON::size ( ) const

◆ toBSON()

Blob s3d::JSON::toBSON ( ) const

BSON 形式にシリアライズした結果を返します。

Returns
BSON データ

◆ toCBOR()

Blob s3d::JSON::toCBOR ( ) const

CBOR 形式にシリアライズした結果を返します。

Returns
CBOR データ

◆ toMessagePack()

Blob s3d::JSON::toMessagePack ( ) const

MessagePack 形式にシリアライズした結果を返します。

Returns
MessagePack データ

Friends And Related Function Documentation

◆ Formatter

void Formatter ( FormatData formatData,
const JSON value 
)
friend

The documentation for this class was generated from the following file: