#include "rapidjson/reader.h"#include <iostream>#include <sstream>using namespace rapidjson;using namespace std;// If you can require C++11, you could use std::to_string heretemplate <typename T> std::string stringify(T x) {std::stringstream ss;ss << x;return ss.str();}struct MyHandler {const char* type;std::string data;MyHandler() : type(), data() {}bool Null() { type = "Null"; data.clear(); return true; }bool Bool(bool b) { type = "Bool:"; data = b? "true": "false"; return true; }bool Int(int i) { type = "Int:"; data = stringify(i); return true; }bool Uint(unsigned u) { type = "Uint:"; data = stringify(u); return true; }bool Int64(int64_t i) { type = "Int64:"; data = stringify(i); return true; }bool Uint64(uint64_t u) { type = "Uint64:"; data = stringify(u); return true; }bool Double(double d) { type = "Double:"; data = stringify(d); return true; }bool RawNumber(const char* str, SizeType length, bool) { type = "Number:"; data = std::string(str, length); return true; }bool String(const char* str, SizeType length, bool) { type = "String:"; data = std::string(str, length); return true; }bool StartObject() { type = "StartObject"; data.clear(); return true; }bool Key(const char* str, SizeType length, bool) { type = "Key:"; data = std::string(str, length); return true; }bool EndObject(SizeType memberCount) { type = "EndObject:"; data = stringify(memberCount); return true; }bool StartArray() { type = "StartArray"; data.clear(); return true; }bool EndArray(SizeType elementCount) { type = "EndArray:"; data = stringify(elementCount); return true; }private:MyHandler(const MyHandler& noCopyConstruction);MyHandler& operator=(const MyHandler& noAssignment);};int main() {const char json[] = " { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } ";MyHandler handler;Reader reader;StringStream ss(json);reader.IterativeParseInit();while (!reader.IterativeParseComplete()) {reader.IterativeParseNext<kParseDefaultFlags>(ss, handler);cout << handler.type << handler.data << endl;}return 0;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。