rapidjson::Document jsonDoc; rapidjson::Document::AllocatorType &allocator = jsonDoc.GetAllocator(); jsonDoc.SetObject();
jsonDoc.AddMember("name", "qfl", allocator); jsonDoc.AddMember("age", 20, allocator);
rapidjson::Value letterArray(rapidjson::kArrayType); letterArray.PushBack("a", allocator); letterArray.PushBack("b", allocator); letterArray.PushBack("c", allocator); jsonDoc.AddMember("letter", letterArray, allocator);
rapidjson::Value locationObj(rapidjson::kObjectType); locationObj.AddMember("province", "fujian", allocator); locationObj.AddMember("city", "xiamen", allocator); locationObj.AddMember("number", 16, allocator); jsonDoc.AddMember("location", locationObj, allocator);
rapidjson::Value bookArray(rapidjson::kArrayType); rapidjson::Value book1(rapidjson::kObjectType); book1.AddMember("name", "book1", allocator); book1.AddMember("isbn", "123", allocator); bookArray.PushBack(book1, allocator);
rapidjson::Value book2(rapidjson::kObjectType); book2.AddMember("name", "book2", allocator); book2.AddMember("isbn", "456", allocator); bookArray.PushBack(book2, allocator); jsonDoc.AddMember("book", bookArray, allocator);
jsonDoc.AddMember("healthy", true, allocator);
rapidjson::StringBuffer buffer; rapidjson::Writer<rapidjson::StringBuffer> writer(buffer); jsonDoc.Accept(writer);
std::string strJson = buffer.GetString(); log("-----生成的Json:\n%s", strJson.c_str());
std::string strPath = FileUtils::getInstance()->getWritablePath() + "JsonFile.txt"; FILE* myFile = fopen(strPath.c_str(), "w"); if (myFile) { fputs(buffer.GetString(), myFile); fclose(myFile); }
log("-----读取Json内容:");
rapidjson::Document newDoc; myFile = fopen(strPath.c_str(), "r"); if (myFile) { rapidjson::FileStream inputStream(myFile); newDoc.ParseStream<0>(inputStream); fclose(myFile); }
if (newDoc.HasParseError()) { log("Json Parse error:%d", newDoc.GetParseError()); } else { if (newDoc.HasMember("name")) { log("name:%s", newDoc["name"].GetString()); } else {}
if (newDoc.HasMember("age")) { log("age:%d", newDoc["age"].GetInt()); } else {}
if (newDoc.HasMember("letter")) { rapidjson::Value letter; letter = newDoc["letter"];
if (letter.IsArray() && !letter.Empty()) { for (rapidjson::SizeType i = 0; i < letter.Size(); i++) { log("letter:%s", letter[i].GetString()); } } else {} } else {}
if (newDoc.HasMember("location")) { rapidjson::Value location; location = newDoc["location"];
if (location.IsObject()) {
if (location.HasMember("province")) { log("location:province:%s", location["province"].GetString()); } else {} if (location.HasMember("city")) { log("location:city:%s", location["city"].GetString()); } else {} if (location.HasMember("number")) { log("location:number:%d", location["number"].GetInt()); } else {} } else {} } else {}
if (newDoc.HasMember("book")) { rapidjson::Value book; book = newDoc["book"];
if (book.IsArray() && !book.Empty()) {
rapidjson::Value tempBook; for (rapidjson::SizeType i = 0; i < book.Size(); i++) { tempBook = book[i];
if (tempBook.IsObject()) {
if (tempBook.HasMember("name") && tempBook.HasMember("isbn")) { log("book:%d:name:%s, isbn:%s", i, tempBook["name"].GetString(), tempBook["isbn"].GetString()); } else {} } else {} } } else {} } else {}
if (newDoc.HasMember("healthy")) { if (newDoc["healthy"].GetBool()) { log("healthy:true"); } else { log("healthy:false"); } } else {} }
|