在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:kazuho/picojson开源软件地址:https://github.com/kazuho/picojson开源编程语言:C++ 91.0%开源软件介绍:PicoJSON - a C++ JSON parser / serializerCopyright © 2009-2010 Cybozu Labs, Inc. Copyright © 2011-2015 Kazuho Oku Licensed under 2-clause BSD license VersionIntroductionPicoJSON is a tiny JSON parser / serializer for C++ with following properties:
Reading JSON using the pull interfaceThere are several ways to use the pull (DOM-like) interface of picojson. The easiest way is to use the two-argument
Four-argument
It is also possible to use the
Accessing the valuesValues of a JSON object is represented as instances of picojson::value class. namespace picojson { class value { ... public: typedef std::vector<value> array; typedef std::map<std::string, value> object; value(); // create a null object explicit value(bool b); // create a boolean object explicit value(double n); // create a number object explicit value(const std::string& s); // create a string object explicit value(const array& a); // create an array object explicit value(const object& o); // create an "object" bool is<picojson::null>() const; // check if the object is "null" bool is<bool>() const; // check if the object is a boolean const bool& get<bool>() const; // const accessor (usable only if the object is a boolean) bool& get<bool>(); // non-const accessor (usable only if the object is a boolean) bool is<double>() const; // check if the object is a number const double& get<double>() const; // const accessor (usable only if the object is a number) double& get<double>(); // non-const accessor (usable only if the object is a number) bool is<std::string>() const; // check if the object is a string const std::string& get<std::string>() const; // const accessor (usable only if the object is a string) std::string& get<std::string>(); // non-const accessor (usable only if the object is a string) bool is<array>() const; // check if the object is an array const array& get<array>() const; // const accessor (usable only if the object is an array) array& get<array>(); // non-const accessor (usable only if the object is an array) bool is<object>() const; // check if the object is an "object" const object& get<object>() const; // const accessor (usable only if the object is an object) object& get<object>(); // non-const accessor (usable only if the object is an array) bool evaluate_as_boolean() const; // evaluates the object as a boolean std::string serialize() const; // returns the object in JSON representation template void serialize(Iter os) const; // serializes the object in JSON representation through an output iterator std::string to_str() const; // returns the object in string (for casual use) }; } The code below parses a JSON string and prints the contents of the object. picojson::value v; // parse the input std::cin >> v; std::string err = picojson::get_last_error(); if (! err.empty()) { std::cerr << err << std::endl; exit(1); } // check if the type of the value is "object" if (! v.is<picojson::object>()) { std::cerr << "JSON is not an object" << std::endl; exit(2); } // obtain a const reference to the map, and print the contents const picojson::value::object& obj = v.get<picojson::object>(); for (picojson::value::object::const_iterator i = obj.begin(); i != obj.end(); ++i) { std::cout << i->first << ': ' << i->second.to_str() << std::endl; } Please note that the type check is mandatory; do not forget to check the type of the object by calling is<type>() before accessing the value by calling get<type>(). Reading JSON using the streaming (event-driven) interfacePlease refer to the implementation of picojson::default_parse_context and picojson::null_parse_context. There is also an example (examples/streaming.cc) . Serializing to JSONInstances of the picojson::value class can be serialized in three ways, to ostream, to std::string, or to an output iterator. picojson::value v; ... std::cout << v; picojson::value v; ... std::string json = v.serialize(); picojson::value v; ... v.serialize(std::ostream_iterator<char>(std::cout)); Experimental support for int64_tExperimental suport for int64_t becomes available if the code is compiled with preprocessor macro Turning on the feature will cause following changes to picojson:
Enabling the feature should not cause compatibility problem with code that do not use the feature. Further readingExamples can be found in the examples directory, and on the Wiki. Please add your favorite examples to the Wiki. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论