COSMOS core  1.0.2 (beta)
Comprehensive Open-architecture Solution for Mission Operations Systems
json11::Json Class Referencefinal

#include <json11.hpp>

Collaboration diagram for json11::Json:

Public Types

enum  Type {
  NUL, NUMBER, BOOL, STRING,
  ARRAY, OBJECT
}
 
typedef std::vector< Jsonarray
 
typedef std::map< std::string, Jsonobject
 
typedef std::initializer_list< std::pair< std::string, Type > > shape
 

Public Member Functions

 Json () noexcept
 
 Json (std::nullptr_t) noexcept
 
 Json (double value)
 
 Json (int value)
 
 Json (bool value)
 
 Json (const std::string &value)
 
 Json (std::string &&value)
 
 Json (const char *value)
 
 Json (const array &values)
 
 Json (array &&values)
 
 Json (const object &values)
 
 Json (object &&values)
 
template<class T , class = decltype(&T::to_json)>
 Json (const T &t)
 
template<class M , typename std::enable_if< std::is_constructible< std::string, decltype(std::declval< M >().begin() ->first)>::value &&std::is_constructible< Json, decltype(std::declval< M >().begin() -> second>
 Json (const M &m)
 
template<class V , typename std::enable_if< std::is_constructible< Json, decltype(*std::declval< V >().begin())>::value, int >::type = 0>
 Json (const V &v)
 
 Json (void *)=delete
 
Type type () const
 
std::string type_name () const
 
bool is_null () const
 
bool is_number () const
 
bool is_bool () const
 
bool is_string () const
 
bool is_array () const
 
bool is_object () const
 
double number_value () const
 
int int_value () const
 
bool bool_value () const
 
const std::string & string_value () const
 
const arrayarray_items () const
 
const objectobject_items () const
 
const Jsonoperator[] (size_t i) const
 
const Jsonoperator[] (const std::string &key) const
 
void dump (std::string &out) const
 
std::string dump () const
 
bool operator== (const Json &rhs) const
 
bool operator< (const Json &rhs) const
 
bool operator!= (const Json &rhs) const
 
bool operator<= (const Json &rhs) const
 
bool operator> (const Json &rhs) const
 
bool operator>= (const Json &rhs) const
 
bool has_shape (const shape &types, std::string &err) const
 

Static Public Member Functions

static Json parse (const std::string &in, std::string &err, JsonParse strategy=JsonParse::STANDARD)
 
static Json parse (const char *in, std::string &err, JsonParse strategy=JsonParse::STANDARD)
 
static std::vector< Jsonparse_multi (const std::string &in, std::string::size_type &parser_stop_pos, std::string &err, JsonParse strategy=JsonParse::STANDARD)
 
static std::vector< Jsonparse_multi (const std::string &in, std::string &err, JsonParse strategy=JsonParse::STANDARD)
 

Private Attributes

std::shared_ptr< JsonValuem_ptr
 

Member Typedef Documentation

typedef std::vector<Json> json11::Json::array
typedef std::map<std::string, Json> json11::Json::object
typedef std::initializer_list<std::pair<std::string, Type> > json11::Json::shape

Member Enumeration Documentation

Enumerator
NUL 
NUMBER 
BOOL 
STRING 
ARRAY 
OBJECT 
82  {
84  };
Definition: json11.hpp:83
Definition: json11.hpp:83
Definition: json11.hpp:83
Definition: json11.hpp:83
Definition: json11.hpp:83
Definition: json11.hpp:83

Constructor & Destructor Documentation

json11::Json::Json ( )
noexcept
253 : m_ptr(statics().null) {}
static const Statics & statics()
Definition: json11.cpp:238
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
json11::Json::Json ( std::nullptr_t  )
noexcept
254 : m_ptr(statics().null) {}
static const Statics & statics()
Definition: json11.cpp:238
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
json11::Json::Json ( double  value)
255 : m_ptr(make_shared<JsonDouble>(value)) {}
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
json11::Json::Json ( int  value)
256 : m_ptr(make_shared<JsonInt>(value)) {}
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
json11::Json::Json ( bool  value)
257 : m_ptr(value ? statics().t : statics().f) {}
static const Statics & statics()
Definition: json11.cpp:238
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
json11::Json::Json ( const std::string &  value)
json11::Json::Json ( std::string &&  value)
json11::Json::Json ( const char *  value)
260 : m_ptr(make_shared<JsonString>(value)) {}
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
json11::Json::Json ( const array values)
261 : m_ptr(make_shared<JsonArray>(values)) {}
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
json11::Json::Json ( Json::array &&  values)
262 : m_ptr(make_shared<JsonArray>(move(values))) {}
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
json11::Json::Json ( const object values)
json11::Json::Json ( object &&  values)
template<class T , class = decltype(&T::to_json)>
json11::Json::Json ( const T &  t)
inline
106 : Json(t.to_json()) {}
Json() noexcept
Definition: json11.cpp:253
template<class M , typename std::enable_if< std::is_constructible< std::string, decltype(std::declval< M >().begin() ->first)>::value &&std::is_constructible< Json, decltype(std::declval< M >().begin() -> second>
json11::Json::Json ( const M &  m)
inline
113 : Json(object(m.begin(), m.end())) {}
Json() noexcept
Definition: json11.cpp:253
template<class V , typename std::enable_if< std::is_constructible< Json, decltype(*std::declval< V >().begin())>::value, int >::type = 0>
json11::Json::Json ( const V &  v)
inline
119 : Json(array(v.begin(), v.end())) {}
std::vector< Json > array
Definition: json11.hpp:87
Json() noexcept
Definition: json11.cpp:253
json11::Json::Json ( void *  )
delete

Member Function Documentation

Json::Type json11::Json::type ( ) const
270 { return m_ptr->type(); }
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
string json11::Json::type_name ( ) const
271  {
272  if(m_ptr->type()==NUL) return "NULL";
273  if(m_ptr->type()==NUMBER) return "NUMBER";
274  if(m_ptr->type()==BOOL) return "BOOL";
275  if(m_ptr->type()==STRING) return "STRING";
276  if(m_ptr->type()==ARRAY) return "ARRAY";
277  if(m_ptr->type()==OBJECT) return "OBJECT";
278  return "NULL";
279 }
Definition: json11.hpp:83
Definition: json11.hpp:83
Definition: json11.hpp:83
Definition: json11.hpp:83
Definition: json11.hpp:83
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
Definition: json11.hpp:83
bool json11::Json::is_null ( ) const
inline
129 { return type() == NUL; }
Definition: json11.hpp:83
Type type() const
Definition: json11.cpp:270
bool json11::Json::is_number ( ) const
inline
130 { return type() == NUMBER; }
Type type() const
Definition: json11.cpp:270
Definition: json11.hpp:83
bool json11::Json::is_bool ( ) const
inline
131 { return type() == BOOL; }
Type type() const
Definition: json11.cpp:270
Definition: json11.hpp:83
bool json11::Json::is_string ( ) const
inline
132 { return type() == STRING; }
Type type() const
Definition: json11.cpp:270
Definition: json11.hpp:83
bool json11::Json::is_array ( ) const
inline
133 { return type() == ARRAY; }
Type type() const
Definition: json11.cpp:270
Definition: json11.hpp:83
bool json11::Json::is_object ( ) const
inline
134 { return type() == OBJECT; }
Type type() const
Definition: json11.cpp:270
Definition: json11.hpp:83
double json11::Json::number_value ( ) const
280 { return m_ptr->number_value(); }
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
int json11::Json::int_value ( ) const
281 { return m_ptr->int_value(); }
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
bool json11::Json::bool_value ( ) const
282 { return m_ptr->bool_value(); }
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
const string & json11::Json::string_value ( ) const
283 { return m_ptr->string_value(); }
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
const vector< Json > & json11::Json::array_items ( ) const
284 { return m_ptr->array_items(); }
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
const map< string, Json > & json11::Json::object_items ( ) const
285 { return m_ptr->object_items(); }
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
const Json & json11::Json::operator[] ( size_t  i) const
286 { return (*m_ptr)[i]; }
size_t i
Definition: json11.cpp:361
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
const Json& json11::Json::operator[] ( const std::string &  key) const
void json11::Json::dump ( std::string &  out) const
std::string json11::Json::dump ( ) const
inline
158  {
159  std::string out;
160  dump(out);
161  return out;
162  }
std::string dump() const
Definition: json11.hpp:158
static Json json11::Json::parse ( const std::string &  in,
std::string &  err,
JsonParse  strategy = JsonParse::STANDARD 
)
static
static Json json11::Json::parse ( const char *  in,
std::string &  err,
JsonParse  strategy = JsonParse::STANDARD 
)
inlinestatic
170  {
171  if (in) {
172  return parse(std::string(in), err, strategy);
173  } else {
174  err = "null input";
175  return nullptr;
176  }
177  }
static Json parse(const std::string &in, std::string &err, JsonParse strategy=JsonParse::STANDARD)
string & err
Definition: json11.cpp:362
const JsonParse strategy
Definition: json11.cpp:364
static std::vector<Json> json11::Json::parse_multi ( const std::string &  in,
std::string::size_type &  parser_stop_pos,
std::string &  err,
JsonParse  strategy = JsonParse::STANDARD 
)
static
static std::vector<Json> json11::Json::parse_multi ( const std::string &  in,
std::string &  err,
JsonParse  strategy = JsonParse::STANDARD 
)
inlinestatic
188  {
189  std::string::size_type parser_stop_pos;
190  return parse_multi(in, parser_stop_pos, err, strategy);
191  }
string & err
Definition: json11.cpp:362
static std::vector< Json > parse_multi(const std::string &in, std::string::size_type &parser_stop_pos, std::string &err, JsonParse strategy=JsonParse::STANDARD)
const JsonParse strategy
Definition: json11.cpp:364
bool json11::Json::operator== ( const Json rhs) const
311  {
312  if (m_ptr == other.m_ptr)
313  return true;
314  if (m_ptr->type() != other.m_ptr->type())
315  return false;
316 
317  return m_ptr->equals(other.m_ptr.get());
318 }
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
bool json11::Json::operator< ( const Json rhs) const
320  {
321  if (m_ptr == other.m_ptr)
322  return false;
323  if (m_ptr->type() != other.m_ptr->type())
324  return m_ptr->type() < other.m_ptr->type();
325 
326  return m_ptr->less(other.m_ptr.get());
327 }
std::shared_ptr< JsonValue > m_ptr
Definition: json11.hpp:209
bool json11::Json::operator!= ( const Json rhs) const
inline
195 { return !(*this == rhs); }
bool json11::Json::operator<= ( const Json rhs) const
inline
196 { return !(rhs < *this); }
bool json11::Json::operator> ( const Json rhs) const
inline
197 { return (rhs < *this); }
bool json11::Json::operator>= ( const Json rhs) const
inline
198 { return !(*this < rhs); }
bool json11::Json::has_shape ( const shape types,
std::string &  err 
) const
812  {
813  if (!is_object()) {
814  err = "expected JSON object, got " + dump();
815  return false;
816  }
817 
818  const auto& obj_items = object_items();
819  for (auto & item : types) {
820  const auto it = obj_items.find(item.first);
821  if (it == obj_items.cend() || it->second.type() != item.second) {
822  err = "bad type for " + item.first + " in " + dump();
823  return false;
824  }
825  }
826 
827  return true;
828 }
std::string dump() const
Definition: json11.hpp:158
string & err
Definition: json11.cpp:362
bool is_object() const
Definition: json11.hpp:134
const object & object_items() const
Definition: json11.cpp:285

Member Data Documentation

std::shared_ptr<JsonValue> json11::Json::m_ptr
private

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