{"id":4250,"date":"2020-04-09T18:45:56","date_gmt":"2020-04-09T10:45:56","guid":{"rendered":"https:\/\/damogame.cn\/wordpress\/?p=4250"},"modified":"2020-04-09T18:45:56","modified_gmt":"2020-04-09T10:45:56","slug":"%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8rapidjson","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/4250","title":{"rendered":"\u5982\u4f55\u4f7f\u7528RapidJson"},"content":{"rendered":"<p><a href=\"https:\/\/www.cnblogs.com\/MenAngel\/p\/11512882.html\">\u539f\u6587\u5730\u5740<\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u00a0 \uff081\uff09RapidJson\u662f\u4ec0\u4e48<\/strong><\/p>\n<div class=\"cnblogs_code\">\n<pre>RapidJson\u662f\u4e00\u4e2a\u8de8\u5e73\u53f0\u7684c++\u7684json\u7684\u89e3\u6790\u5668\u548c\u751f\u6210\u5668\uff1b\r\n\u76f8\u6bd4\u8f83jsoncpp\u5e93\uff0cRapidJson\u53ea\u6709\u5934\u6587\u4ef6\uff0c\u5bb9\u6613\u5b89\u88c5;\r\nRapidJSON \u4e0d\u4f9d\u8d56STL\u548cboost\u7b49\u5916\u90e8\u5e93\u72ec\u7acb;\r\n\u53ea\u4f7f\u7528\u5982\u4e0b\u6587\u4ef6\uff1a&lt;cstdio&gt;, &lt;cstdlib&gt;, &lt;cstring&gt;, &lt;inttypes.h&gt;, &lt;new&gt;, &lt;stdint.h&gt;\uff1b\r\n\u9ad8\u6027\u80fd\uff0c\u4f7f\u7528\u6a21\u7248\u53ca\u5185\u8054\u51fd\u6570\u53bb\u964d\u4f4e\u51fd\u6570\u8c03\u7528\u5f00\u9500\u3001\u5185\u90e8\u7ecf\u4f18\u5316\u7684 Grisu2 \u53ca\u6d6e\u70b9\u6570\u89e3\u6790\u5b9e\u73b0\u3001\u53ef\u9009\u7684 SSE2\/SSE4.2 \u652f\u6301.<\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><strong>\u00a0 \uff082\uff09RapidJson\u4f7f\u7528\u8303\u4f8b(DOM\u89e3\u6790json\u5b57\u7b26\u4e32\u5e76\u4fee\u6539json\u4e2d\u6307\u5b9a\u5143\u7d20\u7684\u503c)<\/strong><\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>#include &lt;iostream&gt;\r\n#include \"rapidjson\/document.h\"\r\n#include \"rapidjson\/writer.h\"\r\n#include \"rapidjson\/stringbuffer.h\"\r\n\r\nusing namespace std;\r\nusing namespace rapidjson;\r\n\r\nint main(int argv ,char *argc[])\r\n{\r\n  \/\/1.\u628aJSON\u89e3\u6790\u81f3DOM\r\n  const char * strJson = \"{\\\"key1\\\":\\\"value1\\\",\\\"key2\\\":\\\"value2\\\",\\\"key3\\\":100}\";\r\n  Document doc;\r\n  doc.Parse(strJson);\r\n  cout&lt;&lt; strJson &lt;&lt; endl;\r\n  \/\/2.\u5229\u7528DOM\u4f5c\u51fa\u4fee\u6539\r\n  Value&amp; v1 = doc[\"key2\"];\r\n  v1=\"value_modify\";\r\n  \/\/v1.SetString(\"value_modify\");  \r\n  Value&amp; v2 = doc[\"key3\"];\r\n  v2.SetInt(v2.GetInt()+1);\r\n  \/\/SetString()\r\n  \/\/SetBool()\r\n  \/\/SetUint()\r\n  \/\/SetInt64()\r\n  \/\/SetUInt64()\r\n  \/\/SetDouble()\r\n  \/\/SetFloat()\r\n  \/\/SetArray()\r\n  \/\/SetObject()\r\n  \/\/SetNull()\r\n\r\n  \/\/3.\u5c06DOM stringfy \u4e3ajson\r\n  StringBuffer buffer;\r\n  Writer&lt;StringBuffer&gt; writer(buffer);\r\n  doc.Accept(writer);\r\n\r\n  cout&lt;&lt; buffer.GetString() &lt;&lt; endl;\r\n  return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<div class=\"cnblogs_code\">\n<pre>{\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":100}\r\n{\"key1\":\"value1\",\"key2\":\"value_modify\",\"key3\":101}<\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><strong>\u00a0 \uff083\uff09\u6587\u4ef6\u5bf9\u8c61\u6a21\u578b\uff08Document Object Model, DOM\uff09API<\/strong><\/p>\n<p>\u6587\u4ef6\u5bf9\u8c61\u6a21\u578b\uff0c\u5728RapidJson\u4e2d\u5e7f\u6cdb\u7684\u4f7f\u7528\u3002<\/p>\n<p><strong>\u00a0\u00a0\u00a0 1.\u6784\u5efajson value\u5230DOM\uff1a<\/strong><\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>#include \"rapidjson\/document.h\"\r\n#include \"rapidjson\/writer.h\"\r\n#include \"rapidjson\/stringbuffer.h\"\r\n\r\nusing namespace std;\r\nusing namespace rapidjson;\r\n\r\nint main(int argv ,char *argc[])\r\n{\r\n  \/\/ 1.\u51c6\u5907\u6570\u636e\r\n  string name = \"MenAngel\";\r\n  string gender = \"boy\";\r\n  int age = 23;\r\n  vector&lt;string&gt; hobbys = {\"\u8bed\u6587\",\"\u6570\u5b66\",\"\u82f1\u8bed\"};\r\n  map&lt;string,double&gt; score ={{\"\u8bed\u6587\",80},{\"\u6570\u5b66\",90},{\"\u82f1\u8bed\",100}};\r\n\r\n  \/\/ 2.\u521d\u59cb\u5316DOM\r\n  StringBuffer strBuffer;\r\n  Writer&lt;StringBuffer&gt; writer(strBuffer);\r\n  \/\/2.1 \u6839DOM\u5f00\u59cb\r\n<\/pre>\n<p><strong> writer.StartObject();<\/strong><\/p>\n<pre>    writer.Key(\"name\");\r\n    writer.String(name.c_str());\r\n    writer.Key(\"gender\");\r\n    writer.String(gender.c_str());\r\n    writer.Key(\"age\");\r\n    writer.Int(age);\r\n    writer.Key(\"hobby\");\r\n<\/pre>\n<p><strong> writer.StartArray(); <\/strong><\/p>\n<pre>for(auto &amp;item : hobbys)\r\n    {\r\n      writer.String(item.c_str());\r\n    }\r\n<\/pre>\n<p><strong> writer.EndArray();<\/strong><\/p>\n<pre>    writer.Key(\"scores\");\r\n<\/pre>\n<p><strong> writer.StartObject(); <\/strong><\/p>\n<pre>for(auto &amp;item : scores)\r\n      {\r\n        writer.Key((item.first).c_str());\r\n        writer.Double(item.second);\r\n      }\r\n<\/pre>\n<p><strong> writer.EndObject(); <\/strong><\/p>\n<pre>\/\/2.2 \u6839DOM\u7ed3\u675f\r\n<\/pre>\n<p><strong> writer.EndObject(); <\/strong><\/p>\n<pre>\/\/3.\u5c06\u4e0a\u8ff0DOM\u7ec4\u7ec7\u7684json\u6570\u636e\u5199\u5165json.txt\u6587\u4ef6\r\n  string outFileName = \"json.txt\";\r\n  ofstream outfile(outFileName,std::ios::trunc);\r\n  outfile&lt;&lt;strBuffer.GetString()&lt;&lt;endl;\r\n  outfile.flush();\r\n  outfile.close();\r\n  return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<div class=\"cnblogs_code\">\n<pre>{\"name\":\"MenAngel\",\"gender\":\"boy\",\"age\":23,\"hobbys\":[\"\u8bed\u6587\",\"\u6570\u5b66\",\"\u82f1\u8bed\"],\"scores\":{\"\u6570\u5b66\":90.0,\"\u82f1\u8bed\":100.0,\"\u8bed\u6587\":80.0}}<\/pre>\n<\/div>\n<p><strong>\u00a0\u00a0\u00a0 2.\u6784\u5efaJson Value\u5230DOM<\/strong><\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>#include &lt;iostream&gt;\r\n#include &lt;fstream&gt;\r\n#include &lt;vector&gt;\r\n#include &lt;map&gt;\r\n#include \"rapidjson\/document.h\"\r\n#include \"rapidjson\/writer.h\"\r\n#include \"rapidjson\/stringbuffer.h\"\r\n\r\nusing namespace std;\r\nusing namespace rapidjson;\r\n\r\nint main(int argv ,char *argc[])\r\n{\r\n  \/\/ 1.\u51c6\u5907\u6570\u636e\r\n  string name = \"MenAngel\";\r\n  string gender = \"boy\";\r\n  int age = 23;\r\n  vector&lt;string&gt; hobbys = {\"\u8bed\u6587\",\"\u6570\u5b66\",\"\u82f1\u8bed\"};\r\n  map&lt;string,double&gt; scores ={{\"\u8bed\u6587\",80},{\"\u6570\u5b66\",90},{\"\u82f1\u8bed\",100}};\r\n\r\n  \/\/2.\u521d\u59cb\u5316DOM\r\n  Document doc;\r\n  Document::AllocatorType&amp; allocator = doc.GetAllocator();\r\n  doc.SetObject();\/\/\u5b9e\u4f8b\u5316\u4e00\u4e2aGenericValue\u5230\u6839DOM\r\n  Value tempValue1;\r\n  tempValue1.SetString(name.c_str(),allocator);\r\n  doc.AddMember(\"name\",tempValue1,allocator);\r\n  Value tempValue2(rapidjson::kObjectType);\r\n  tempValue2.SetString(gender.c_str(),allocator);\r\n  doc.AddMember(\"gender\",tempValue2,allocator);\r\n  doc.AddMember(\"age\",age,allocator);\r\n  Value tempValue3(kArrayType);\r\n  for(auto hobby:hobbys)\r\n  {\r\n    Value hobbyValue(kStringType);\r\n    hobbyValue.SetString(hobby.c_str(),allocator);\r\n    tempValue3.PushBack(hobbyValue,allocator);\r\n  }\r\n  doc.AddMember(\"hobbys\",tempValue3,allocator);\r\n  Value tempValue4(kObjectType);\r\n  tempValue4.SetObject();\r\n  for(auto score : scores)\r\n  {\r\n    Value scoreValue(kNumberType);\r\n    \/\/cout&lt;&lt;score.second;\r\n    scoreValue.SetInt(score.second);\r\n    Value scoreName(kStringType);\r\n    scoreName.SetString(score.first.c_str(),allocator);\r\n    tempValue4.AddMember(scoreName,scoreValue,allocator);\r\n  }\r\n  doc.AddMember(\"scores\",tempValue4,allocator);\r\n  StringBuffer strBuffer;\r\n  Writer&lt;StringBuffer&gt; writer(strBuffer);\r\n  doc.Accept(writer);\r\n\r\n  string outFileName = \"json.txt\";\r\n  ofstream outfile(outFileName,std::ios::trunc);\r\n  outfile&lt;&lt;strBuffer.GetString()&lt;&lt;endl;\r\n  outfile.flush();\r\n  outfile.close();\r\n  return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<div class=\"cnblogs_code\">\n<pre>{\"name\":\"MenAngel\",\"gender\":\"boy\",\"age\":23,\"hobbys\":[\"\u8bed\u6587\",\"\u6570\u5b66\",\"\u82f1\u8bed\"],\"scores\":{\"\u6570\u5b66\":90.0,\"\u82f1\u8bed\":100.0,\"\u8bed\u6587\":80.0}}<\/pre>\n<\/div>\n<p><strong>\u00a0\u00a0\u00a0 3.RapidJSon\u67e5\u8be2<\/strong><\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>#include &lt;iostream&gt;\r\n#include \"rapidjson\/document.h\"\r\n#include \"rapidjson\/writer.h\"\r\n#include \"rapidjson\/stringbuffer.h\"\r\nusing namespace std;\r\nusing namespace rapidjson;\r\n\r\nint main(int argv,char *argc[])\r\n{\r\n  \/\/1.\u6784\u5efajson\r\n  const char * strJson = \"{\\\"name\\\":\\\"MenAngel\\\",\\\"age\\\":23,\\\"hobbys\\\":[\\\"\u8bed\u6587\\\",\\\"\u6570\u5b66\\\",\\\"\u82f1\u8bed\\\"]}\";\r\n  Document doc;\r\n  doc.Parse(strJson);\r\n  StringBuffer strBuffer;\r\n  Writer&lt;StringBuffer&gt; writer(strBuffer);\r\n  doc.Accept(writer);\r\n  cout&lt;&lt;strBuffer.GetString()&lt;&lt;endl;\r\n  \/\/2.\u67e5\u8be2json\u503c\r\n  cout&lt;&lt;\"\u904d\u5386\u65b9\u6cd5\u4e00\uff1a\"&lt;&lt;endl;\r\n  int count = doc.MemberCount();\r\n  cout&lt;&lt;\"doc \u7684\u5c5e\u6027\u6210\u5458\u6709 \"&lt;&lt;count&lt;&lt;\"\u4e2a!\"&lt;&lt;endl;\r\n  static const char* kTypeNames[] =\r\n    { \"Null\", \"False\", \"True\", \"Object\", \"Array\", \"String\", \"Number\" };\r\n  int i = 0;\r\n  for(Value::MemberIterator iter = doc.MemberBegin();iter != doc.MemberEnd();++iter)\r\n  {\r\n    cout&lt;&lt;++i&lt;&lt;\".property \"&lt;&lt;iter-&gt;name.GetString()&lt;&lt;\" is \"&lt;&lt;kTypeNames[iter-&gt;value.GetType()]&lt;&lt;endl;\r\n    if(iter-&gt;value.GetType() == 4)\r\n    {\r\n      \/\/3.\u904d\u5386Array\r\n      for(auto &amp;item : iter-&gt;value.GetArray())\r\n        \/\/IsBool\u3001IsObject\u3001IsInt\u3001IsNull\u3001IsNumber\u3001IsDouble\r\n        if(item.IsString())\r\n          cout&lt;&lt;\"item = \"&lt;&lt;item.GetString()&lt;&lt;endl;\r\n    }\r\n  }\r\n  \/\/4.\u67e5\u8be2\u67d0\u4e2a\u6210\u5458\u662f\u5426\u5b58\u5728\r\n  Value::ConstMemberIterator it = doc.FindMember(\"scores\");\r\n  if(it != doc.MemberEnd())\r\n    cout&lt;&lt;\"Has Finded!\"&lt;&lt;endl;\r\n  else\r\n    cout&lt;&lt;\"Not Finded!\"&lt;&lt;endl;\r\n  \/\/5.\u904d\u5386doc\u7684\u6240\u6709\u6210\u5458\r\n  cout&lt;&lt;\"\u904d\u5386\u65b9\u6cd5\u4e8c\uff1a\"&lt;&lt;endl;\r\n  for(auto &amp;m :doc.GetObject())\r\n  {\r\n    cout&lt;&lt;\"Has member :\"&lt;&lt;m.name.GetString()&lt;&lt;\" = \";\r\n    if(m.value.IsString())\r\n      cout&lt;&lt;m.value.GetString()&lt;&lt;endl;\r\n    if(m.value.IsInt())\r\n      cout&lt;&lt;m.value.GetInt()&lt;&lt;endl;\r\n    if(m.value.IsBool())\r\n      cout&lt;&lt;m.value.GetBool()&lt;&lt;endl;\r\n    if(m.value.IsArray())\r\n      cout&lt;&lt;\"is array\"&lt;&lt;endl;\r\n  }\r\n  return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>{\"name\":\"MenAngel\",\"age\":23,\"hobbys\":[\"\u8bed\u6587\",\"\u6570\u5b66\",\"\u82f1\u8bed\"]}\r\n\u904d\u5386\u65b9\u6cd5\u4e00\uff1a\r\ndoc \u7684\u5c5e\u6027\u6210\u5458\u6709 3\u4e2a!\r\n1.property name is String\r\n2.property age is Number\r\n3.property hobbys is Array\r\nitem = \u8bed\u6587\r\nitem = \u6570\u5b66\r\nitem = \u82f1\u8bed\r\nNot Finded!\r\n\u904d\u5386\u65b9\u6cd5\u4e8c\uff1a\r\nHas member :name = MenAngel\r\nHas member :age = 23\r\nHas member :hobbys = is array<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u00a0\u00a0\u00a0 4.RapidJson\u5c5e\u6027\u83b7\u53d6<\/strong><\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>#include &lt;iostream&gt;\r\n#include \"rapidjson\/document.h\"\r\n#include \"rapidjson\/writer.h\"\r\n#include \"rapidjson\/stringbuffer.h\"\r\nusing namespace std;\r\nusing namespace rapidjson;\r\n\r\nint main(int argv,char *argc[])\r\n{\r\n  \/\/1.\u6784\u5efajson\r\n  const char * strJson = \"{\\\"name\\\":\\\"MenAngel\\\",\\\"age\\\":23,\\\"hobbys\\\":[\\\"\u8bed\u6587\\\",\\\"\u6570\u5b66\\\",\\\"\u82f1\u8bed\\\"]}\";\r\n  Document doc;\r\n  doc.Parse(strJson);\r\n  StringBuffer strBuffer;\r\n  Writer&lt;StringBuffer&gt; writer(strBuffer);\r\n  doc.Accept(writer);\r\n  cout&lt;&lt;strBuffer.GetString()&lt;&lt;endl;\r\n  \/\/2.DOM\u6839\u662f\u4e00\u4e2a\u5bf9\u8c61\r\n  if(doc.IsObject())\r\n    cout&lt;&lt;\"doc is object!\"&lt;&lt;endl;\r\n  \/\/3.doc\u4e0d\u4e3aj\u7a7a\r\n  if(!doc.IsNull())\r\n  {\r\n    cout&lt;&lt;\"doc is not null!\"&lt;&lt;endl;\r\n  }\r\n  Document document;\r\n  if(document.IsNull())\r\n  {\r\n    cout&lt;&lt;\"document is null!\"&lt;&lt;endl;\r\n    cout&lt;&lt;\"Set Object\"&lt;&lt;endl;\r\n    document.SetObject();\r\n  }\r\n  if(!document.IsNull())\r\n    cout&lt;&lt;\"document is not null!\"&lt;&lt;endl;\r\n  \/\/4.DOM \u7684\u5927\u5c0f.\r\n  cout&lt;&lt;\"doc.MemmberCount() = \"&lt;&lt;doc.MemberCount()&lt;&lt;endl;\r\n  \/\/5.\u589e\u52a0HasMember\u5224\u65ad\u9632\u6b62\u65ad\u8a00\u9519\u8bef\r\n  if(doc.HasMember(\"hobbys\") &amp;&amp; !doc[\"hobbys\"].Empty())\r\n    cout&lt;&lt;\"doc[\\\"hobbys\\\"] is not empty!\"&lt;&lt;endl;\r\n  else\r\n    cout&lt;&lt;\"member not exits!\"&lt;&lt;endl;\r\n  \/\/6.\u53d6\u952e\u503c\r\n  Value::ConstMemberIterator iter = doc.FindMember(\"age\");\r\n  if(iter != doc.MemberEnd())\r\n  {\r\n    cout&lt;&lt;\"Member age is exits!\"&lt;&lt;endl;\r\n    cout&lt;&lt;iter-&gt;name.GetString()&lt;&lt;\":\"&lt;&lt;iter-&gt;value.GetInt()&lt;&lt;endl;\r\n  }\r\n  \/\/7.Array\u7684\u5927\u5c0f\r\n  cout&lt;&lt;\"doc[\\\"hobbys\\\"].Capacity() = \"&lt;&lt;doc[\"hobbys\"].Capacity()&lt;&lt;endl;\r\n  \/\/8.\u5b57\u7b26\u4e32\u7684\u5927\u5c0f \u5f53\u5b57\u7b26\u4e2d\u5b58\u5728\\u0000\u65f6strlen\u4f1a\u5230\u6b64\u622a\u65ad\r\n  cout&lt;&lt;\"doc[\\\"name\\\"].length = \"&lt;&lt;strlen(doc[\"name\"].GetString())&lt;&lt;endl;\r\n  cout&lt;&lt;\"doc[\\\"name\\\"].length = \"&lt;&lt;doc[\"name\"].GetStringLength()&lt;&lt;endl;\r\n  doc.AddMember(\"test\",\"a\\u0000b\",doc.GetAllocator());\r\n  \/\/\u53ea\u80fd\u5f53test\u6210\u5458\u5b58\u5728\u65f6\u624d\u80fd\u76f4\u63a5\u8d4b\u503c\r\n  \/\/doc[\"test\"] = \"a\\u0000b\";\r\n  cout&lt;&lt;\"doc[\\\"test\\\"].length = \"&lt;&lt;strlen(doc[\"test\"].GetString())&lt;&lt;endl;\r\n  cout&lt;&lt;\"doc[\\\"test\\\"].length = \"&lt;&lt;doc[\"test\"].GetStringLength()&lt;&lt;endl;\r\n  \/\/\r\n  return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>{\"name\":\"MenAngel\",\"age\":23,\"hobbys\":[\"\u8bed\u6587\",\"\u6570\u5b66\",\"\u82f1\u8bed\"]}\r\ndoc is object!\r\ndoc is not null!\r\ndocument is null!\r\nSet Object\r\ndocument is not null!\r\ndoc.MemmberCount() = 3\r\ndoc[\"hobbys\"] is not empty!\r\nMember age is exits!\r\nage:23\r\ndoc[\"hobbys\"].Capacity() = 3\r\ndoc[\"name\"].length = 8\r\ndoc[\"name\"].length = 8\r\ndoc[\"test\"].length = 1\r\ndoc[\"test\"].length = 3<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u00a0\u00a0\u00a0 5.RapidJson\u4e00\u4e9b\u7279\u6027<\/strong><\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>#include &lt;iostream&gt;\r\n#include &lt;stdio.h&gt;\r\n#include &lt;stdlib.h&gt;\r\n#include \"rapidjson\/document.h\"\r\n#include \"rapidjson\/writer.h\"\r\n#include \"rapidjson\/stringbuffer.h\"\r\nusing namespace std;\r\nusing namespace rapidjson;\r\n\r\nint main(int argv,char *argc[])\r\n{\r\n  \/\/1.\u6784\u5efajson\r\n  const char * strJson = \"{\\\"name\\\":\\\"MenAngel\\\",\\\"age\\\":23,\\\"hobbys\\\":[\\\"\u8bed\u6587\\\",\\\"\u6570\u5b66\\\",\\\"\u82f1\u8bed\\\"]}\";\r\n  Document doc;\r\n  doc.Parse(strJson);\r\n  StringBuffer strBuffer;\r\n  Writer&lt;StringBuffer&gt; writer(strBuffer);\r\n  doc.Accept(writer);\r\n  cout&lt;&lt;strBuffer.GetString()&lt;&lt;endl;\r\n  \/\/2.const char *\u3001string\u3001value(kStringType)\u4e4b\u95f4\u6bd4\u8f83\u5927\u5c0f\r\n  if(doc[\"name\"] == \"MenAngel\")\r\n    cout&lt;&lt;\"(1)doc[\\\"name\\\"] equal MenAngel!\"&lt;&lt;endl;\r\n  if(doc[\"name\"].GetString() == string(\"MenAngel\"))\r\n    cout&lt;&lt;\"(2)doc[\\\"name\\\"] equal MenAngel!\"&lt;&lt;endl;\r\n  if( 0 == strcmp(doc[\"name\"].GetString(),\"MenAngel\"))\r\n    cout&lt;&lt;\"(3)doc[\\\"name\\\"] equal MenAngel!\"&lt;&lt;endl;\r\n  if(doc[\"name\"].GetString() != \"MenAngel\")\r\n    cout&lt;&lt;\"(4)\u4e0d\u6210\u7acb!\"&lt;&lt;endl;\r\n  \/\/3.value\u8d4b\u503c\r\n  Value v;\/\/v is NULL &amp;&amp; v is not Object\r\n  if(v.IsNull())\r\n    cout&lt;&lt;\"v is Null()\"&lt;&lt;endl;\r\n  v.SetObject();\r\n  if(v.IsObject())\r\n    cout&lt;&lt;\"v is Object\"&lt;&lt;endl;\r\n  Value tValue(kObjectType);\/\/tValue is not Null,tValue is  Object\r\n  if(!tValue.IsNull())\r\n    cout&lt;&lt;\"tVlaue is not NULL!\"&lt;&lt;endl;\r\n  if(tValue.IsObject())\r\n    cout&lt;&lt;\"tValue is Object\"&lt;&lt;endl;\r\n  \/\/4.\u8f6c\u79fb\u8bed\u4e49\uff0c\u907f\u514dvalue\u6df1\u8d4b\u503c\r\n  \/\/AddMember(), PushBack()\u3001\u8d4b\u503c\u5747\u91c7\u7528\u6df1\u8d4b\u503c\r\n  Value a(123);\r\n  Value b(456);\r\n  a = b;\r\n  if(b.IsNull())\r\n    cout&lt;&lt;\"b is Null,\"&lt;&lt;\"a = \"&lt;&lt;a.GetInt()&lt;&lt;endl;\r\n  Value c(kArrayType);\r\n  Document::AllocatorType&amp; allocator = doc.GetAllocator();\r\n  c.PushBack(Value(11), allocator);\r\n  c.PushBack(Value().SetInt(22), allocator); \/\/ fluent API\r\n  c.PushBack(Value(33).Move(), allocator);   \/\/ \u8f6c\u79fb\u8bed\u4e49\r\n  cout&lt;&lt;\"c.Capacity() = \"&lt;&lt;c.Capacity()&lt;&lt;endl;\r\n  cout&lt;&lt;\"c.Size() = \"&lt;&lt;c.Size()&lt;&lt;endl;\r\n  for(auto &amp;m : c.GetArray())\r\n  {\r\n    cout&lt;&lt;\"item = \"&lt;&lt;m.GetInt()&lt;&lt;endl;\r\n  }\r\n  \/\/\u5b57\u7b26\u4e32\u7684\u5bb9\u91cf\u53ca\u5927\u5c0f\r\n  cout&lt;&lt;\"doc[\\\"hobbys\\\"].Size() = \"&lt;&lt;doc[\"hobbys\"].Size()&lt;&lt;endl;\r\n  cout&lt;&lt;\"doc[\\\"hobbys\\\"].Capacity() = \"&lt;&lt;doc[\"hobbys\"].Capacity()&lt;&lt;endl;\r\n  \/\/5.\u4ea4\u6362value\r\n  Value d(123);\r\n  Value e(\"string\");\r\n  d.Swap(e);\r\n  if(!d.IsNull() &amp;&amp; !e.IsNull())\r\n  {\r\n    cout&lt;&lt;\"d is not null,e is not null!\"&lt;&lt;endl;\r\n    cout&lt;&lt;\"d = \"&lt;&lt;d.GetString()&lt;&lt;\" e = \"&lt;&lt;e.GetInt()&lt;&lt;endl;\r\n  }\r\n  \/\/6.\u521b\u5efastring\r\n  \/\/\u590d\u5236\u5b57\u7b26\u4e32\r\n  Value f(kStringType);\r\n  char str[20] = \"My first string!\";\r\n  f.SetString(str,doc.GetAllocator());\r\n  cout&lt;&lt;f.GetString()&lt;&lt;endl;\r\n  Value g;\r\n  char buffer[20];\r\n  int len = sprintf(buffer, \"%s -&gt; %s\", \"name\", \"value\"); \/\/ \u52a8\u6001\u521b\u5efa\u7684\u5b57\u7b26\u4e32\u3002\r\n  g.SetString(buffer,len,doc.GetAllocator());\r\n  \/\/g.SetString(buffer,doc.GetAllocator())\r\n  cout&lt;&lt;g.GetString()&lt;&lt;endl;\r\n  \/\/\u7b80\u5355\u5f15\u7528\u5e38\u91cf\u5b57\u7b26\u4e32\r\n  Value h;\r\n  h.SetString(\"My third String!\");\/\/ h = \"My thrid String!\"\r\n  cout&lt;&lt;h.GetString()&lt;&lt;endl;\r\n   \/\/\u7b80\u5355\u5f15\u7528\u5e38\u91cfl\u5b57\u7b26\u4e32\r\n  Value i;\r\n  const char * tempStr = \"my fourth string\";\r\n  size_t cstr_len = strlen(tempStr);\r\n  i.SetString(StringRef(tempStr));\r\n  \/\/i.SetString(StringRef(tempStr,cstr_len));\r\n  \/\/i = StringRef(tempStr,cstr_len)\r\n  \/\/i = StringRef(tempStr)\r\n  \/\/i.SetString(tempStr); \u4e0d\u5408\u6cd5\r\n  cout&lt;&lt;i.GetString()&lt;&lt;endl;\r\n  return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>{\"name\":\"MenAngel\",\"age\":23,\"hobbys\":[\"\u8bed\u6587\",\"\u6570\u5b66\",\"\u82f1\u8bed\"]}\r\n(1)doc[\"name\"] equal MenAngel!\r\n(2)doc[\"name\"] equal MenAngel!\r\n(3)doc[\"name\"] equal MenAngel!\r\n(4)\u4e0d\u6210\u7acb!\r\nv is Null()\r\nv is Object\r\ntVlaue is not NULL!\r\ntValue is Object\r\nb is Null,a = 456\r\nc.Capacity() = 16\r\nc.Size() = 3\r\nitem = 11\r\nitem = 22\r\nitem = 33\r\ndoc[\"hobbys\"].Size() = 3\r\ndoc[\"hobbys\"].Capacity() = 3\r\nd is not null,e is not null!\r\nd = string e = 123\r\nMy first string!\r\nname -&gt; value\r\nMy third String!\r\nmy fourth string<\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u539f\u6587\u5730\u5740 &nbsp; \u00a0 \uff081\uff09Rap<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[],"tags":[118],"class_list":["post-4250","post","type-post","status-publish","format-standard","hentry","tag-02-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/4250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=4250"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/4250\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=4250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=4250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=4250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}