3#include <CesiumJsonReader/DoubleJsonHandler.h>
4#include <CesiumJsonReader/IntegerJsonHandler.h>
5#include <CesiumJsonReader/JsonHandler.h>
6#include <CesiumJsonReader/JsonObjectJsonHandler.h>
7#include <CesiumJsonReader/Library.h>
8#include <CesiumJsonReader/StringJsonHandler.h>
9#include <CesiumUtility/Assert.h>
10#include <CesiumUtility/JsonValue.h>
23template <
typename T,
typename THandler>
35 template <
typename... Ts>
39 std::bind(handlerFactory<Ts...>, std::forward<Ts>(args)...)),
48 this->_pArray = pArray;
49 this->_arrayIsOpen =
false;
50 this->_objectHandler.reset(this->_handlerFactory());
54 return this->invalid(
"A null")->
readNull();
58 return this->invalid(
"A boolean")->
readBool(b);
62 return this->invalid(
"An integer")->
readInt32(i);
66 return this->invalid(
"An integer")->
readUint32(i);
70 return this->invalid(
"An integer")->
readInt64(i);
74 return this->invalid(
"An integer")->
readUint64(i);
78 return this->invalid(
"A double (floating-point)")->
readDouble(d);
82 return this->invalid(
"A string")->
readString(str);
86 if (!this->_arrayIsOpen) {
87 return this->invalid(
"An object")->readObjectStart();
90 CESIUM_ASSERT(this->_pArray);
91 T& o = this->_pArray->emplace_back();
92 this->_objectHandler->reset(
this, &o);
93 return this->_objectHandler->readObjectStart();
97 [[maybe_unused]]
const std::string_view& str)
noexcept override {
104 if (this->_arrayIsOpen) {
105 return this->invalid(
"An array")->readArrayStart();
108 this->_arrayIsOpen =
true;
109 this->_pArray->clear();
116 const std::string& warning,
117 std::vector<std::string>&& context =
118 std::vector<std::string>())
override {
120 std::string(
"[") + std::to_string(this->_pArray->size()) +
"]");
121 this->
parent()->reportWarning(warning, std::move(context));
126 if (this->_arrayIsOpen) {
128 type +
" value is not allowed in the object array and has been "
129 "replaced with a default value.");
130 this->_pArray->emplace_back();
131 return this->ignoreAndContinue();
133 this->reportWarning(type +
" is not allowed and has been ignored.");
134 return this->ignoreAndReturnToParent();
138 template <
typename... Ts>
static THandler* handlerFactory(Ts&&... args) {
139 return new THandler(std::forward<Ts>(args)...);
142 std::vector<T>* _pArray =
nullptr;
143 bool _arrayIsOpen =
false;
145 std::function<THandler*()> _handlerFactory;
146 std::unique_ptr<THandler> _objectHandler;
154class CESIUMJSONREADER_API
156 :
public JsonHandler {
159 using ValueType = std::vector<CesiumUtility::JsonValue>;
161 ArrayJsonHandler() noexcept : JsonHandler(), _objectHandler() {}
170 this->_pArray = pArray;
171 this->_arrayIsOpen =
false;
175 if (!this->_arrayIsOpen) {
176 return this->invalid(
"A null")->readNull();
179 CESIUM_ASSERT(this->_pArray);
180 this->_pArray->emplace_back(
nullptr);
185 if (!this->_arrayIsOpen) {
186 return this->invalid(
"A bool")->readBool(b);
189 CESIUM_ASSERT(this->_pArray);
190 this->_pArray->emplace_back(b);
195 if (!this->_arrayIsOpen) {
196 return this->invalid(
"An integer")->readInt32(i);
199 CESIUM_ASSERT(this->_pArray);
200 this->_pArray->emplace_back(i);
205 if (!this->_arrayIsOpen) {
206 return this->invalid(
"An integer")->readUint32(i);
209 CESIUM_ASSERT(this->_pArray);
210 this->_pArray->emplace_back(i);
215 if (!this->_arrayIsOpen) {
216 return this->invalid(
"An integer")->readInt64(i);
219 CESIUM_ASSERT(this->_pArray);
220 this->_pArray->emplace_back(i);
225 if (!this->_arrayIsOpen) {
226 return this->invalid(
"An integer")->readUint64(i);
229 CESIUM_ASSERT(this->_pArray);
230 this->_pArray->emplace_back(i);
235 if (!this->_arrayIsOpen) {
236 return this->invalid(
"A double (floating-point)")->readDouble(d);
239 CESIUM_ASSERT(this->_pArray);
240 this->_pArray->emplace_back(d);
245 if (!this->_arrayIsOpen) {
246 return this->invalid(
"A string")->readString(str);
249 CESIUM_ASSERT(this->_pArray);
250 this->_pArray->emplace_back(std::string(str));
255 if (!this->_arrayIsOpen) {
256 return this->invalid(
"An object")->readObjectStart();
259 CESIUM_ASSERT(this->_pArray);
261 this->_objectHandler.reset(
this, &o);
262 return this->_objectHandler.readObjectStart();
274 if (this->_arrayIsOpen) {
276 CESIUM_ASSERT(this->_pArray);
278 this->_objectHandler.reset(
this, &o);
279 return this->_objectHandler.readArrayStart();
281 this->_arrayIsOpen =
true;
282 this->_pArray->clear();
290 const std::string& warning,
291 std::vector<std::string>&& context =
292 std::vector<std::string>())
override {
294 std::string(
"[") + std::to_string(this->_pArray->size()) +
"]");
295 this->
parent()->reportWarning(warning, std::move(context));
300 if (this->_arrayIsOpen) {
302 type +
" value is not allowed in the JSON value array "
303 "and has been replaced with a default value.");
304 this->_pArray->emplace_back();
305 return this->ignoreAndContinue();
307 this->reportWarning(type +
" is not allowed and has been ignored.");
308 return this->ignoreAndReturnToParent();
312 std::vector<CesiumUtility::JsonValue>* _pArray =
nullptr;
313 bool _arrayIsOpen =
false;
314 CesiumJsonReader::JsonObjectJsonHandler _objectHandler;
325 :
public JsonHandler {
330 ArrayJsonHandler() noexcept : JsonHandler() {}
338 this->_pArray = pArray;
339 this->_arrayIsOpen =
false;
343 return this->invalid(
"A null")->
readNull();
347 return this->invalid(
"A bool")->
readBool(b);
351 if (!this->_arrayIsOpen) {
352 return this->invalid(
"An integer")->readInt32(i);
355 CESIUM_ASSERT(this->_pArray);
356 this->_pArray->emplace_back(
static_cast<double>(i));
361 if (!this->_arrayIsOpen) {
362 return this->invalid(
"An integer")->readUint32(i);
365 CESIUM_ASSERT(this->_pArray);
366 this->_pArray->emplace_back(
static_cast<double>(i));
371 if (!this->_arrayIsOpen) {
372 return this->invalid(
"An integer")->readInt64(i);
375 CESIUM_ASSERT(this->_pArray);
376 this->_pArray->emplace_back(
static_cast<double>(i));
381 if (!this->_arrayIsOpen) {
382 return this->invalid(
"An integer")->readUint64(i);
385 CESIUM_ASSERT(this->_pArray);
386 this->_pArray->emplace_back(
static_cast<double>(i));
391 if (!this->_arrayIsOpen) {
392 return this->invalid(
"A double (floating-point)")->readDouble(d);
395 CESIUM_ASSERT(this->_pArray);
396 this->_pArray->emplace_back(d);
401 return this->invalid(
"A string")->
readString(str);
409 if (this->_arrayIsOpen) {
410 return this->invalid(
"An array")->readArrayStart();
413 this->_arrayIsOpen =
true;
414 this->_pArray->clear();
421 const std::string& warning,
422 std::vector<std::string>&& context =
423 std::vector<std::string>())
override {
425 std::string(
"[") + std::to_string(this->_pArray->size()) +
"]");
426 this->
parent()->reportWarning(warning, std::move(context));
431 if (this->_arrayIsOpen) {
433 type +
" value is not allowed in the double array and has been "
434 "replaced with a default value.");
435 this->_pArray->emplace_back();
436 return this->ignoreAndContinue();
438 this->reportWarning(type +
" is not allowed and has been ignored.");
439 return this->ignoreAndReturnToParent();
443 std::vector<double>* _pArray =
nullptr;
444 bool _arrayIsOpen =
false;
453 :
public JsonHandler {
458 ArrayJsonHandler() noexcept : JsonHandler() {}
466 this->_pArray = pArray;
467 this->_arrayIsOpen =
false;
471 return this->invalid(
"A null")->
readNull();
475 return this->invalid(
"A bool")->
readBool(b);
479 if (!this->_arrayIsOpen) {
480 return this->invalid(
"An integer")->readInt32(i);
483 CESIUM_ASSERT(this->_pArray);
484 this->_pArray->emplace_back(
static_cast<T
>(i));
489 if (!this->_arrayIsOpen) {
490 return this->invalid(
"An integer")->readUint32(i);
493 CESIUM_ASSERT(this->_pArray);
494 this->_pArray->emplace_back(
static_cast<T
>(i));
499 if (!this->_arrayIsOpen) {
500 return this->invalid(
"An integer")->readInt64(i);
503 CESIUM_ASSERT(this->_pArray);
504 this->_pArray->emplace_back(
static_cast<T
>(i));
509 if (!this->_arrayIsOpen) {
510 return this->invalid(
"An integer")->readUint64(i);
513 CESIUM_ASSERT(this->_pArray);
514 this->_pArray->emplace_back(
static_cast<T
>(i));
519 return this->invalid(
"A double (floating-point)")->
readDouble(d);
523 return this->invalid(
"A string")->
readString(str);
531 if (this->_arrayIsOpen) {
532 return this->invalid(
"An array")->readArrayStart();
535 this->_arrayIsOpen =
true;
536 this->_pArray->clear();
543 const std::string& warning,
544 std::vector<std::string>&& context =
545 std::vector<std::string>())
override {
547 std::string(
"[") + std::to_string(this->_pArray->size()) +
"]");
548 this->
parent()->reportWarning(warning, std::move(context));
553 if (this->_arrayIsOpen) {
555 type +
" value is not allowed in the integer array and has been "
556 "replaced with a default value.");
557 this->_pArray->emplace_back();
558 return this->ignoreAndContinue();
560 this->reportWarning(type +
" is not allowed and has been ignored.");
561 return this->ignoreAndReturnToParent();
565 std::vector<T>* _pArray =
nullptr;
566 bool _arrayIsOpen =
false;
575 :
public JsonHandler {
580 ArrayJsonHandler() noexcept : JsonHandler() {}
588 this->_pArray = pArray;
589 this->_arrayIsOpen =
false;
593 return this->invalid(
"A null")->
readNull();
597 return this->invalid(
"A bool")->
readBool(b);
601 return this->invalid(
"An integer")->
readInt32(i);
605 return this->invalid(
"An integer")->
readUint32(i);
609 return this->invalid(
"An integer")->
readInt64(i);
613 return this->invalid(
"An integer")->
readUint64(i);
617 return this->invalid(
"A double (floating-point)")->
readDouble(d);
625 if (this->_arrayIsOpen) {
626 return this->invalid(
"An array")->readArrayStart();
629 this->_arrayIsOpen =
true;
630 this->_pArray->clear();
637 if (!this->_arrayIsOpen) {
638 return this->invalid(
"A string")->readString(str);
641 CESIUM_ASSERT(this->_pArray);
642 this->_pArray->emplace_back(str);
647 const std::string& warning,
648 std::vector<std::string>&& context =
649 std::vector<std::string>())
override {
651 std::string(
"[") + std::to_string(this->_pArray->size()) +
"]");
652 this->
parent()->reportWarning(warning, std::move(context));
657 if (this->_arrayIsOpen) {
659 type +
" value is not allowed in the string array and has been "
660 "replaced with a default value.");
661 this->_pArray->emplace_back();
662 return this->ignoreAndContinue();
664 this->reportWarning(type +
" is not allowed and has been ignored.");
665 return this->ignoreAndReturnToParent();
669 std::vector<std::string>* _pArray =
nullptr;
670 bool _arrayIsOpen =
false;
680template <
typename T,
typename THandler>
681class CESIUMJSONREADER_API
683 :
public JsonHandler {
694 template <
typename... Ts>
698 std::bind(handlerFactory<Ts...>, std::forward<Ts>(args)...)),
707 this->_pArray = pArray;
708 this->_arrayIsOpen =
false;
709 this->_elementHandler.reset(this->_handlerFactory());
713 return this->invalid(
"A null")->
readNull();
717 return this->invalid(
"A bool")->
readBool(b);
721 return this->invalid(
"An integer")->
readInt32(i);
725 return this->invalid(
"An integer")->
readUint32(i);
729 return this->invalid(
"An integer")->
readInt64(i);
733 return this->invalid(
"An integer")->
readUint64(i);
737 return this->invalid(
"A double (floating-point)")->
readDouble(d);
741 return this->invalid(
"A string")->
readString(str);
749 if (this->_arrayIsOpen) {
750 CESIUM_ASSERT(this->_pArray);
751 std::vector<T>& o = this->_pArray->emplace_back();
752 this->_elementHandler->reset(
this, &o);
753 return this->_elementHandler->readArrayStart();
755 this->_arrayIsOpen =
true;
756 this->_pArray->clear();
764 const std::string& warning,
765 std::vector<std::string>&& context =
766 std::vector<std::string>())
override {
768 std::string(
"[") + std::to_string(this->_pArray->size()) +
"]");
769 this->
parent()->reportWarning(warning, std::move(context));
774 if (this->_arrayIsOpen) {
776 type +
" value is not allowed in the array of arrays and has been "
777 "replaced with a default value.");
778 this->_pArray->emplace_back();
779 return this->ignoreAndContinue();
781 this->reportWarning(type +
" is not allowed and has been ignored.");
782 return this->ignoreAndReturnToParent();
786 template <
typename... Ts>
787 static ArrayJsonHandler<T, THandler>* handlerFactory(Ts&&... args) {
788 return new ArrayJsonHandler<T, THandler>(std::forward<Ts>(args)...);
791 std::vector<std::vector<T>>* _pArray =
nullptr;
792 bool _arrayIsOpen =
false;
794 std::function<ArrayJsonHandler<T, THandler>*()> _handlerFactory;
795 std::unique_ptr<ArrayJsonHandler<T, THandler>> _elementHandler;
virtual IJsonHandler * readInt32(int32_t i) override
Called when the JSON parser encounters an int32 value.
virtual IJsonHandler * readUint32(uint32_t i) override
Called when the JSON parser encounters a uint32 value.
virtual IJsonHandler * readString(const std::string_view &str) override
Called when the JSON parser encounters a string value.
virtual IJsonHandler * readInt64(int64_t i) override
Called when the JSON parser encounters an int64 value.
virtual IJsonHandler * readUint64(uint64_t i) override
Called when the JSON parser encounters a uint64 value.
virtual void reportWarning(const std::string &warning, std::vector< std::string > &&context=std::vector< std::string >()) override
Report a warning while reading JSON.
virtual IJsonHandler * readArrayEnd() override
Called when the JSON parser encounters the end of an array.
virtual IJsonHandler * readObjectKey(const std::string_view &str) override
Called when the JSON parser encounters a key while reading an object.
virtual IJsonHandler * readNull() override
Called when the JSON parser encounters a null.
virtual IJsonHandler * readObjectEnd() override
Called when the JSON parser encounters the end of an object.
void reset(IJsonHandler *pParent, std::vector< CesiumUtility::JsonValue > *pArray)
Resets the parent and destination array of this ArrayJsonHandler.
virtual IJsonHandler * readObjectStart() override
Called when the JSON parser encounters the beginning of an object.
virtual IJsonHandler * readArrayStart() override
Called when the JSON parser encounters the start of an array.
virtual IJsonHandler * readBool(bool b) override
Called when the JSON parser encounters a boolean value.
std::vector< CesiumUtility::JsonValue > ValueType
The destination type.
virtual IJsonHandler * readDouble(double d) override
Called when the JSON parser encounters a double value.
virtual IJsonHandler * readUint32(uint32_t i) override
Called when the JSON parser encounters a uint32 value.
virtual IJsonHandler * readString(const std::string_view &str) override
Called when the JSON parser encounters a string value.
virtual IJsonHandler * readObjectStart() override
Called when the JSON parser encounters the beginning of an object.
virtual IJsonHandler * readArrayStart() override
Called when the JSON parser encounters the start of an array.
virtual void reportWarning(const std::string &warning, std::vector< std::string > &&context=std::vector< std::string >()) override
Report a warning while reading JSON.
virtual IJsonHandler * readArrayEnd() override
Called when the JSON parser encounters the end of an array.
virtual IJsonHandler * readUint64(uint64_t i) override
Called when the JSON parser encounters a uint64 value.
std::vector< T > ValueType
The destination type.
virtual IJsonHandler * readDouble(double d) override
Called when the JSON parser encounters a double value.
virtual IJsonHandler * readNull() override
Called when the JSON parser encounters a null.
void reset(IJsonHandler *pParent, std::vector< T > *pArray)
Resets the parent and destination array of this ArrayJsonHandler.
virtual IJsonHandler * readInt64(int64_t i) override
Called when the JSON parser encounters an int64 value.
virtual IJsonHandler * readInt32(int32_t i) override
Called when the JSON parser encounters an int32 value.
virtual IJsonHandler * readBool(bool b) override
Called when the JSON parser encounters a boolean value.
virtual IJsonHandler * readInt64(int64_t i) override
Called when the JSON parser encounters an int64 value.
virtual IJsonHandler * readUint64(uint64_t i) override
Called when the JSON parser encounters a uint64 value.
virtual IJsonHandler * readNull() override
Called when the JSON parser encounters a null.
virtual IJsonHandler * readDouble(double d) override
Called when the JSON parser encounters a double value.
virtual IJsonHandler * readObjectStart() override
Called when the JSON parser encounters the beginning of an object.
std::vector< double > ValueType
The destination type.
virtual IJsonHandler * readString(const std::string_view &str) override
Called when the JSON parser encounters a string value.
virtual IJsonHandler * readUint32(uint32_t i) override
Called when the JSON parser encounters a uint32 value.
virtual IJsonHandler * readBool(bool b) override
Called when the JSON parser encounters a boolean value.
virtual IJsonHandler * readArrayStart() override
Called when the JSON parser encounters the start of an array.
virtual IJsonHandler * readArrayEnd() override
Called when the JSON parser encounters the end of an array.
void reset(IJsonHandler *pParent, std::vector< double > *pArray)
Resets the parent and destination array of this ArrayJsonHandler.
virtual void reportWarning(const std::string &warning, std::vector< std::string > &&context=std::vector< std::string >()) override
Report a warning while reading JSON.
virtual IJsonHandler * readInt32(int32_t i) override
Called when the JSON parser encounters an int32 value.
virtual IJsonHandler * readArrayEnd() override
Called when the JSON parser encounters the end of an array.
virtual IJsonHandler * readInt32(int32_t i) override
Called when the JSON parser encounters an int32 value.
virtual IJsonHandler * readArrayStart() override
Called when the JSON parser encounters the start of an array.
virtual IJsonHandler * readUint32(uint32_t i) override
Called when the JSON parser encounters a uint32 value.
virtual IJsonHandler * readObjectStart() override
Called when the JSON parser encounters the beginning of an object.
virtual IJsonHandler * readDouble(double d) override
Called when the JSON parser encounters a double value.
void reset(IJsonHandler *pParent, std::vector< std::string > *pArray)
Resets the parent and destination array of this ArrayJsonHandler.
virtual IJsonHandler * readNull() override
Called when the JSON parser encounters a null.
virtual IJsonHandler * readBool(bool b) override
Called when the JSON parser encounters a boolean value.
virtual IJsonHandler * readInt64(int64_t i) override
Called when the JSON parser encounters an int64 value.
virtual IJsonHandler * readString(const std::string_view &str) override
Called when the JSON parser encounters a string value.
std::vector< std::string > ValueType
The destination type.
virtual void reportWarning(const std::string &warning, std::vector< std::string > &&context=std::vector< std::string >()) override
Report a warning while reading JSON.
virtual IJsonHandler * readUint64(uint64_t i) override
Called when the JSON parser encounters a uint64 value.
virtual IJsonHandler * readNull() override
Called when the JSON parser encounters a null.
virtual void reportWarning(const std::string &warning, std::vector< std::string > &&context=std::vector< std::string >()) override
Report a warning while reading JSON.
virtual IJsonHandler * readUint32(uint32_t i) override
Called when the JSON parser encounters a uint32 value.
virtual IJsonHandler * readArrayStart() override
Called when the JSON parser encounters the start of an array.
virtual IJsonHandler * readArrayEnd() override
Called when the JSON parser encounters the end of an array.
virtual IJsonHandler * readUint64(uint64_t i) override
Called when the JSON parser encounters a uint64 value.
void reset(IJsonHandler *pParent, std::vector< std::vector< T > > *pArray)
Resets the parent and destination array of this ArrayJsonHandler.
virtual IJsonHandler * readDouble(double d) override
Called when the JSON parser encounters a double value.
virtual IJsonHandler * readString(const std::string_view &str) override
Called when the JSON parser encounters a string value.
virtual IJsonHandler * readObjectStart() override
Called when the JSON parser encounters the beginning of an object.
virtual IJsonHandler * readBool(bool b) override
Called when the JSON parser encounters a boolean value.
std::vector< T > ValueType
The destination type.
ArrayJsonHandler(Ts &&... args) noexcept
Creates a new ArrayJsonHandler.
virtual IJsonHandler * readInt64(int64_t i) override
Called when the JSON parser encounters an int64 value.
virtual IJsonHandler * readInt32(int32_t i) override
Called when the JSON parser encounters an int32 value.
virtual IJsonHandler * readObjectStart() override
Called when the JSON parser encounters the beginning of an object.
virtual IJsonHandler * readArrayStart() override
Called when the JSON parser encounters the start of an array.
std::vector< T > ValueType
The destination type.
void reset(IJsonHandler *pParent, std::vector< T > *pArray)
Resets the parent and destination array of this ArrayJsonHandler.
virtual IJsonHandler * readObjectKey(const std::string_view &str) noexcept override
Called when the JSON parser encounters a key while reading an object.
virtual IJsonHandler * readInt64(int64_t i) override
Called when the JSON parser encounters an int64 value.
virtual IJsonHandler * readUint32(uint32_t i) override
Called when the JSON parser encounters a uint32 value.
virtual IJsonHandler * readString(const std::string_view &str) override
Called when the JSON parser encounters a string value.
virtual IJsonHandler * readArrayEnd() override
Called when the JSON parser encounters the end of an array.
ArrayJsonHandler(Ts &&... args) noexcept
Creates a new ArrayJsonHandler.
virtual IJsonHandler * readUint64(uint64_t i) override
Called when the JSON parser encounters a uint64 value.
virtual IJsonHandler * readDouble(double d) override
Called when the JSON parser encounters a double value.
virtual IJsonHandler * readBool(bool b) override
Called when the JSON parser encounters a boolean value.
virtual IJsonHandler * readNull() override
Called when the JSON parser encounters a null.
virtual IJsonHandler * readInt32(int32_t i) override
Called when the JSON parser encounters an int32 value.
virtual void reportWarning(const std::string &warning, std::vector< std::string > &&context=std::vector< std::string >()) override
Report a warning while reading JSON.
virtual IJsonHandler * readObjectEnd() noexcept override
Called when the JSON parser encounters the end of an object.
IJsonHandler for reading double values.
Base interface for all JSON handlers. Types that need to be deserialized from JSON should implement I...
virtual IJsonHandler * readUint32(uint32_t i)=0
Called when the JSON parser encounters a uint32 value.
virtual IJsonHandler * readObjectKey(const std::string_view &str)=0
Called when the JSON parser encounters a key while reading an object.
virtual IJsonHandler * readUint64(uint64_t i)=0
Called when the JSON parser encounters a uint64 value.
virtual IJsonHandler * readNull()=0
Called when the JSON parser encounters a null.
virtual IJsonHandler * readObjectEnd()=0
Called when the JSON parser encounters the end of an object.
virtual IJsonHandler * readDouble(double d)=0
Called when the JSON parser encounters a double value.
virtual IJsonHandler * readBool(bool b)=0
Called when the JSON parser encounters a boolean value.
virtual IJsonHandler * readObjectStart()=0
Called when the JSON parser encounters the beginning of an object.
virtual IJsonHandler * readString(const std::string_view &str)=0
Called when the JSON parser encounters a string value.
virtual IJsonHandler * readInt64(int64_t i)=0
Called when the JSON parser encounters an int64 value.
virtual IJsonHandler * readInt32(int32_t i)=0
Called when the JSON parser encounters an int32 value.
IJsonHandler for reading integer values.
IJsonHandler * parent()
Obtains the parent IJsonHandler of this handler.
void reset(IJsonHandler *pParent)
Resets the parent IJsonHandler of this handler.
IJsonHandler for arbitrary CesiumUtility::JsonValue JsonValue objects.
IJsonHandler for reading string values.
A generic implementation of a value in a JSON structure.
Classes for reading JSON.
Utility classes for Cesium.