{"id":1865,"date":"2025-03-24T08:49:45","date_gmt":"2025-03-23T23:49:45","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=1865"},"modified":"2025-03-24T08:49:45","modified_gmt":"2025-03-23T23:49:45","slug":"c%e3%81%a7json%e3%82%92%e7%88%86%e9%80%9f%e3%81%a7%e6%89%b1%e3%81%88%e3%82%8b%ef%bc%81%e7%8f%be%e5%a0%b4%e3%81%a7%e4%bd%bf%e3%81%88%e3%82%8b%e5%ae%9f%e8%b7%b5%e3%82%ac%e3%82%a4%e3%83%892024","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=1865","title":{"rendered":"C++\u3067JSON\u3092\u7206\u901f\u3067\u6271\u3048\u308b\uff01\u73fe\u5834\u3067\u4f7f\u3048\u308b\u5b9f\u8df5\u30ac\u30a4\u30c92024"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">C++\u3067JSON\u3092\u6271\u3046\u57fa\u790e\u77e5\u8b58<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">\u30e2\u30c0\u30f3C++\u3067\u306eJSON\u51e6\u7406\u306e\u91cd\u8981\u6027\u3068\u6ce8\u76ee<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-2\">\u4e3b\u8981\u306aJSON\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u6bd4\u8f03\u3068\u7279\u5fb4<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-3\">nlohmann\/json\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-4\">\u74b0\u5883\u69cb\u7bc9\u304b\u3089Hello World\u307e\u3067\u306e\u624b\u9806<\/a>      <\/li>      <li>        <a href=\"#i-5\">JSON\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u751f\u6210\u3068\u64cd\u4f5c\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-6\">\u914d\u5217\u64cd\u4f5c\u3068\u7e70\u308a\u8fd4\u3057\u51e6\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-7\">\u5b9f\u8df5\u7684\u306aJSON\u30c7\u30fc\u30bf\u51e6\u7406\u30d1\u30bf\u30fc\u30f3<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-8\">\u30cd\u30b9\u30c8\u5316\u3055\u308c\u305fJSON\u306e\u52b9\u7387\u7684\u306a\u51e6\u7406\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-9\">\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3068\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-10\">\u5927\u898f\u6a21JSON\u30c7\u30fc\u30bf\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-11\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u306e\u6975\u610f<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-12\">\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u512a\u5148\u3059\u308b\u30b3\u30c4<\/a>      <\/li>      <li>        <a href=\"#i-13\">\u51e6\u7406\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-14\">\u975e\u540c\u671f\u51e6\u7406\u3068\u306e\u7d44\u307f\u5408\u308f\u305b\u65b9<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-15\">\u73fe\u5834\u3067\u4f7f\u3048\u308bJSON\u30c7\u30fc\u30bf\u51e6\u7406\u5fdc\u7528\u4f8b<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-16\">REST API\u3068\u306e\u9023\u643a\u5b9f\u88c5\u4f8b<\/a>      <\/li>      <li>        <a href=\"#i-17\">\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u51e6\u7406\u306e\u5b9f\u88c5\u4f8b<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-18\">\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u306e\u9023\u643a\u5b9f\u88c5\u4f8b<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">C++\u3067JSON\u3092\u6271\u3046\u57fa\u790e\u77e5\u8b58<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">\u30e2\u30c0\u30f3C++\u3067\u306eJSON\u51e6\u7406\u306e\u91cd\u8981\u6027\u3068\u6ce8\u76ee<\/h3>\n\n\n\n<p>\u73fe\u4ee3\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u306b\u304a\u3044\u3066\u3001JSON\u30c7\u30fc\u30bf\u306e\u51e6\u7406\u306f\u907f\u3051\u3066\u901a\u308c\u306a\u3044\u91cd\u8981\u306a\u8981\u7d20\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u7279\u306b\u30e2\u30c0\u30f3C++\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u7406\u7531\u304b\u3089JSON\u306e\u52b9\u7387\u7684\u306a\u51e6\u7406\u304c\u6ce8\u76ee\u3055\u308c\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u666e\u53ca<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESTful API\u3067\u306e\u30c7\u30fc\u30bf\u4ea4\u63db\u5f62\u5f0f\u3068\u3057\u3066\u306eJSON<\/li>\n\n\n\n<li>\u30b5\u30fc\u30d3\u30b9\u9593\u901a\u4fe1\u306b\u304a\u3051\u308b\u6a19\u6e96\u30c7\u30fc\u30bf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<\/li>\n\n\n\n<li>\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u6d3b\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u306e\u5229\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4eba\u9593\u304c\u8aad\u307f\u66f8\u304d\u3057\u3084\u3059\u3044\u5f62\u5f0f<\/li>\n\n\n\n<li>\u968e\u5c64\u69cb\u9020\u3092\u6301\u3064\u8a2d\u5b9a\u306e\u8868\u73fe<\/li>\n\n\n\n<li>\u52d5\u7684\u306a\u8a2d\u5b9a\u5909\u66f4\u306e\u30b5\u30dd\u30fc\u30c8<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5bfe\u5fdc<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7570\u306a\u308b\u8a00\u8a9e\u9593\u3067\u306e\u30c7\u30fc\u30bf\u4ea4\u63db<\/li>\n\n\n\n<li>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u975e\u4f9d\u5b58\u306e\u30b7\u30ea\u30a2\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3<\/li>\n\n\n\n<li>Web API\u3068\u306e\u30b7\u30fc\u30e0\u30ec\u30b9\u306a\u7d71\u5408<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">\u4e3b\u8981\u306aJSON\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u6bd4\u8f03\u3068\u7279\u5fb4<\/h3>\n\n\n\n<p>C++\u3067JSON\u3092\u6271\u3046\u305f\u3081\u306e\u4e3b\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u3001\u4ee5\u4e0b\u306e\u89b3\u70b9\u304b\u3089\u6bd4\u8f03\u3057\u307e\u3059\uff1a<\/p>\n\n\n<div id=\"id-0908552c-1ebe-4c00-a50d-553b54d19b74\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30e9\u30a4\u30d6\u30e9\u30ea\u540d<\/th><th>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9<\/th><th>\u4f7f\u3044\u3084\u3059\u3055<\/th><th>\u30e1\u30e2\u30ea\u52b9\u7387<\/th><th>C++\u6a19\u6e96\u5bfe\u5fdc<\/th><th>\u7279\u5fb4<\/th><\/tr><\/thead><tbody><tr><td>nlohmann\/json<\/td><td>\u2b50\u2b50\u2b50\u2b50<\/td><td>\u2b50\u2b50\u2b50\u2b50\u2b50<\/td><td>\u2b50\u2b50\u2b50\u2b50<\/td><td>C++11\u4ee5\u964d<\/td><td>\u30e2\u30c0\u30f3C++\u306e\u6a5f\u80fd\u3092\u6d3b\u7528\u3057\u305f\u76f4\u611f\u7684\u306aAPI<\/td><\/tr><tr><td>RapidJSON<\/td><td>\u2b50\u2b50\u2b50\u2b50\u2b50<\/td><td>\u2b50\u2b50\u2b50<\/td><td>\u2b50\u2b50\u2b50\u2b50\u2b50<\/td><td>C++11\u4ee5\u964d<\/td><td>\u8d85\u9ad8\u901f\u306a\u30d1\u30fc\u30b9\u6027\u80fd<\/td><\/tr><tr><td>Boost.JSON<\/td><td>\u2b50\u2b50\u2b50\u2b50<\/td><td>\u2b50\u2b50\u2b50\u2b50<\/td><td>\u2b50\u2b50\u2b50\u2b50<\/td><td>C++11\u4ee5\u964d<\/td><td>Boost\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u3068\u306e\u7d71\u5408<\/td><\/tr><tr><td>JsonCpp<\/td><td>\u2b50\u2b50\u2b50<\/td><td>\u2b50\u2b50\u2b50\u2b50<\/td><td>\u2b50\u2b50\u2b50<\/td><td>C++03\u4ee5\u964d<\/td><td>\u53e4\u304f\u304b\u3089\u3042\u308b\u5b89\u5b9a\u3057\u305f\u30e9\u30a4\u30d6\u30e9\u30ea<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u5404\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4e3b\u306a\u7279\u5fb4\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>nlohmann\/json<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   #include &lt;nlohmann\/json.hpp&gt;\n   using json = nlohmann::json;\n\n   \/\/ \u76f4\u611f\u7684\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210\n   json j = {\n       {\"name\", \"John\"},\n       {\"age\", 30},\n       {\"city\", \"New York\"}\n   };<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>RapidJSON<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   #include \"rapidjson\/document.h\"\n   using namespace rapidjson;\n\n   \/\/ \u3088\u308a\u4f4e\u30ec\u30d9\u30eb\u306a\u5236\u5fa1\u304c\u53ef\u80fd\n   Document d;\n   d.Parse(R\"({\"name\":\"John\",\"age\":30,\"city\":\"New York\"})\");<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>Boost.JSON<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   #include &lt;boost\/json.hpp&gt;\n   namespace json = boost::json;\n\n   \/\/ Boost\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u306e\u89aa\u548c\u6027\n   json::value obj = {\n       {\"name\", \"John\"},\n       {\"age\", 30},\n       {\"city\", \"New York\"}\n   };<\/pre>\n\n\n\n<p>\u9078\u629e\u306e\u57fa\u6e96\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8981\u4ef6\u306b\u3088\u308b\u9078\u629e<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u6700\u91cd\u8981\uff1aRapidJSON<\/li>\n\n\n\n<li>\u4fdd\u5b88\u6027\u30fb\u53ef\u8aad\u6027\u91cd\u8996\uff1anlohmann\/json<\/li>\n\n\n\n<li>Boost\u30e6\u30fc\u30b6\u30fc\uff1aBoost.JSON<\/li>\n\n\n\n<li>\u30ec\u30ac\u30b7\u30fc\u30b7\u30b9\u30c6\u30e0\uff1aJsonCpp<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8003\u616e\u3059\u3079\u304d\u8981\u7d20<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c1\u30fc\u30e0\u306e\u7fd2\u719f\u5ea6<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u898f\u6a21<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8981\u4ef6<\/li>\n\n\n\n<li>\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u91cd\u8981\u5ea6<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5c0e\u5165\u6642\u306e\u6ce8\u610f\u70b9<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u78ba\u8a8d<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u4e92\u63db\u6027\u306e\u78ba\u4fdd<\/li>\n\n\n\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u7ba1\u7406<\/li>\n\n\n\n<li>\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u3068\u306e\u7d71\u5408<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001\u6700\u3082\u4eba\u6c17\u304c\u3042\u308a\u3001\u30e2\u30c0\u30f3C++\u306e\u6a5f\u80fd\u3092\u6d3b\u7528\u3067\u304d\u308b<strong>nlohmann\/json<\/strong>\u3092\u4e2d\u5fc3\u306b\u89e3\u8aac\u3092\u9032\u3081\u3066\u3044\u304d\u307e\u3059\u3002\u3053\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u3001\u76f4\u611f\u7684\u306aAPI\u3068\u5145\u5b9f\u3057\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001\u6d3b\u767a\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8\u3092\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001\u591a\u304f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u63a1\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-3\">nlohmann\/json\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">\u74b0\u5883\u69cb\u7bc9\u304b\u3089Hello World\u307e\u3067\u306e\u624b\u9806<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u74b0\u5883\u69cb\u7bc9<\/strong><\/li>\n<\/ol>\n\n\n\n<p>\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># vcpkg\u4f7f\u7528\u6642\nvcpkg install nlohmann-json\n\n# Conan\u4f7f\u7528\u6642\nconan install nlohmann_json\/3.11.2\n\n# Ubuntu\/Debian\napt-get install nlohmann-json3-dev<\/pre>\n\n\n\n<p>CMake\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u8a2d\u5b9a\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># CMakeLists.txt\nfind_package(nlohmann_json 3.11.2 REQUIRED)\ntarget_link_libraries(${PROJECT_NAME} PRIVATE nlohmann_json::nlohmann_json)<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u57fa\u672c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;nlohmann\/json.hpp&gt;\n#include &lt;iostream&gt;\n\nusing json = nlohmann::json;\n\nint main() {\n    \/\/ \u57fa\u672c\u7684\u306aJSON\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\n    json hello = {\n        {\"message\", \"Hello, World!\"},\n        {\"version\", 1.0},\n        {\"success\", true}\n    };\n\n    \/\/ JSON\u6587\u5b57\u5217\u3078\u306e\u5909\u63db\u3068\u51fa\u529b\n    std::cout &lt;&lt; hello.dump(4) &lt;&lt; std::endl;\n    return 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">JSON\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u751f\u6210\u3068\u64cd\u4f5c\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u3068\u64cd\u4f5c<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u69d8\u3005\u306a\u30c7\u30fc\u30bf\u578b\u306e\u53d6\u308a\u6271\u3044\njson user = {\n    {\"name\", \"\u7530\u4e2d\u592a\u90ce\"},\n    {\"age\", 30},\n    {\"email\", \"tanaka@example.com\"},\n    {\"is_active\", true},\n    {\"hobbies\", {\"\u8aad\u66f8\", \"\u65c5\u884c\", \"\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\"}},\n    {\"address\", {\n        {\"city\", \"\u6771\u4eac\"},\n        {\"postal_code\", \"100-0001\"}\n    }}\n};\n\n\/\/ \u5024\u306e\u53d6\u5f97\nstd::string name = user[\"name\"].get&lt;std::string&gt;();\nint age = user[\"age\"].get&lt;int&gt;();\n\n\/\/ \u5024\u306e\u5909\u66f4\nuser[\"age\"] = 31;\nuser[\"hobbies\"].push_back(\"\u6599\u7406\");\n\n\/\/ \u65b0\u3057\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8ffd\u52a0\nuser[\"phone\"] = \"090-1234-5678\";<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u578b\u5b89\u5168\u306a\u64cd\u4f5c<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u69cb\u9020\u4f53\u3068JSON\u306e\u76f8\u4e92\u5909\u63db\nstruct User {\n    std::string name;\n    int age;\n    std::string email;\n\n    \/\/ JSON\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u7528\u306e\u95a2\u6570\n    NLOHMANN_DEFINE_TYPE_INTRUSIVE(User, name, age, email)\n};\n\n\/\/ \u69cb\u9020\u4f53\u304b\u3089JSON\u3078\u306e\u5909\u63db\nUser user{\"\u5c71\u7530\u82b1\u5b50\", 25, \"yamada@example.com\"};\njson j = user;\n\n\/\/ JSON\u304b\u3089\u69cb\u9020\u4f53\u3078\u306e\u5909\u63db\nUser parsed = j.get&lt;User&gt;();<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u914d\u5217\u64cd\u4f5c\u3068\u7e70\u308a\u8fd4\u3057\u51e6\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>JSON\u914d\u5217\u306e\u64cd\u4f5c<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u914d\u5217\u306e\u4f5c\u6210\u3068\u64cd\u4f5c\njson array = json::array();\narray.push_back(42);\narray.push_back(\"\u30c6\u30ad\u30b9\u30c8\");\narray.push_back({\"key\", \"value\"});\n\n\/\/ \u914d\u5217\u306e\u7e70\u308a\u8fd4\u3057\u51e6\u7406\nfor (const auto&amp; element : array) {\n    std::cout &lt;&lt; element &lt;&lt; std::endl;\n}\n\n\/\/ \u914d\u5217\u8981\u7d20\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\njson numbers = {1, 2, 3, 4, 5};\njson even_numbers = json::array();\n\nstd::copy_if(numbers.begin(), numbers.end(), \n    std::back_inserter(even_numbers),\n    [](const json&amp; n) { return n.get&lt;int&gt;() % 2 == 0; });<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u9ad8\u5ea6\u306a\u914d\u5217\u64cd\u4f5c<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u914d\u5217\u306e\u5909\u63db\uff08map\u64cd\u4f5c\uff09\njson users = json::array({\n    {\"name\": \"\u7530\u4e2d\", \"age\": 30},\n    {\"name\": \"\u5c71\u7530\", \"age\": 25},\n    {\"name\": \"\u9234\u6728\", \"age\": 35}\n});\n\n\/\/ \u540d\u524d\u306e\u914d\u5217\u3092\u62bd\u51fa\njson names = users.flatten().filter([](const auto&amp; el) {\n    return el.path().back() == \"name\";\n}).transform([](const auto&amp; el) {\n    return el.value();\n});\n\n\/\/ \u914d\u5217\u306e\u30bd\u30fc\u30c8\nstd::sort(users.begin(), users.end(),\n    [](const json&amp; a, const json&amp; b) {\n        return a[\"age\"] &lt; b[\"age\"];\n    });<\/pre>\n\n\n\n<p>\u5b9f\u88c5\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u52b9\u7387\u7684\u306a\u64cd\u4f5c<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e0\u30fc\u30d6\u30bb\u30de\u30f3\u30c6\u30a3\u30af\u30b9\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u53c2\u7167\u306b\u3088\u308b\u5024\u306e\u53d7\u3051\u6e21\u3057<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30a4\u30c6\u30ec\u30fc\u30bf\u306e\u4f7f\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a8\u30e9\u30fc\u9632\u6b62<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u578b\u30c1\u30a7\u30c3\u30af\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306e\u8ffd\u52a0<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4fdd\u5b88\u6027\u306e\u5411\u4e0a<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u660e\u78ba\u306a\u547d\u540d\u898f\u5247<\/li>\n\n\n\n<li>\u30b3\u30e1\u30f3\u30c8\u306e\u9069\u5207\u306a\u4f7f\u7528<\/li>\n\n\n\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3055\u308c\u305f\u8a2d\u8a08<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u7279\u5fb4\u3092\u6d3b\u304b\u3059\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u3067\u4fdd\u5b88\u6027\u306e\u9ad8\u3044JSON\u30c7\u30fc\u30bf\u51e6\u7406\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u5b9f\u8df5\u7684\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u30d1\u30bf\u30fc\u30f3\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-7\">\u5b9f\u8df5\u7684\u306aJSON\u30c7\u30fc\u30bf\u51e6\u7406\u30d1\u30bf\u30fc\u30f3<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">\u30cd\u30b9\u30c8\u5316\u3055\u308c\u305fJSON\u306e\u52b9\u7387\u7684\u306a\u51e6\u7406\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6df1\u3044\u30cd\u30b9\u30c8\u306e\u8d70\u67fb<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u8907\u96d1\u306a\u30cd\u30b9\u30c8\u69cb\u9020\u306e\u5b9a\u7fa9\njson nested_data = {\n    \"company\": {\n        \"departments\": {\n            \"engineering\": {\n                \"teams\": {\n                    \"backend\": {\n                        \"members\": [\n                            {\"name\": \"\u7530\u4e2d\", \"role\": \"\u30ea\u30fc\u30c9\u30a8\u30f3\u30b8\u30cb\u30a2\"},\n                            {\"name\": \"\u5c71\u7530\", \"role\": \"\u30b7\u30cb\u30a2\u30a8\u30f3\u30b8\u30cb\u30a2\"}\n                        ]\n                    }\n                }\n            }\n        }\n    }\n};\n\n\/\/ \u30d1\u30b9\u5f0f\u3092\u4f7f\u7528\u3057\u305f\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\nauto members = nested_data[\"company\"][\"departments\"][\"engineering\"][\"teams\"][\"backend\"][\"members\"];\n\n\/\/ \u30dd\u30a4\u30f3\u30bf\u5f0f\u3092\u4f7f\u7528\u3057\u305f\u5b89\u5168\u306a\u30a2\u30af\u30bb\u30b9\njson::json_pointer ptr(\"\/company\/departments\/engineering\/teams\/backend\/members\");\nif (nested_data.contains(ptr)) {\n    auto members = nested_data[ptr];\n}\n\n\/\/ \u518d\u5e30\u7684\u306a\u51e6\u7406\nvoid process_nested_json(const json&amp; j, const std::string&amp; prefix = \"\") {\n    if (j.is_object()) {\n        for (auto&amp; [key, value] : j.items()) {\n            process_nested_json(value, prefix + \"\/\" + key);\n        }\n    } else if (j.is_array()) {\n        for (size_t i = 0; i &lt; j.size(); ++i) {\n            process_nested_json(j[i], prefix + \"\/\" + std::to_string(i));\n        }\n    } else {\n        std::cout &lt;&lt; \"Value at \" &lt;&lt; prefix &lt;&lt; \": \" &lt;&lt; j &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u52b9\u7387\u7684\u306a\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d5\u30e9\u30c3\u30c8\u5316\u306b\u3088\u308b\u51e6\u7406\njson flat = nested_data.flatten();\nfor (auto&amp; [path, value] : flat.items()) {\n    if (path.find(\"name\") != std::string::npos) {\n        std::cout &lt;&lt; \"Found name: \" &lt;&lt; value &lt;&lt; \" at \" &lt;&lt; path &lt;&lt; std::endl;\n    }\n}\n\n\/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u6d3b\u7528\u3057\u305f\u983b\u7e41\u30a2\u30af\u30bb\u30b9\u306e\u6700\u9069\u5316\nclass JsonCache {\nprivate:\n    const json&amp; data;\n    std::unordered_map&lt;std::string, json::json_pointer&gt; path_cache;\n\npublic:\n    JsonCache(const json&amp; j) : data(j) {}\n\n    const json&amp; get(const std::string&amp; path) {\n        auto it = path_cache.find(path);\n        if (it == path_cache.end()) {\n            it = path_cache.emplace(path, json::json_pointer(path)).first;\n        }\n        return data[it-&gt;second];\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3068\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u578b\u30c1\u30a7\u30c3\u30af\u3068\u4f8b\u5916\u51e6\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5b89\u5168\u306aJSON\u30d1\u30fc\u30b9\njson parse_json_safely(const std::string&amp; input) {\n    try {\n        return json::parse(input);\n    } catch (const json::parse_error&amp; e) {\n        std::cerr &lt;&lt; \"JSON parse error: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n        return json::object();  \/\/ \u7a7a\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8fd4\u3059\n    }\n}\n\n\/\/ \u578b\u5b89\u5168\u306a\u30a2\u30af\u30bb\u30b9\ntemplate&lt;typename T&gt;\nT get_value_safely(const json&amp; j, const std::string&amp; key, const T&amp; default_value) {\n    try {\n        if (j.contains(key) &amp;&amp; j[key].is_number()) {\n            return j[key].get&lt;T&gt;();\n        }\n    } catch (const json::type_error&amp; e) {\n        std::cerr &lt;&lt; \"Type error: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n    return default_value;\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u6a5f\u80fd\u306e\u5b9f\u88c5<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ JSON\u30b9\u30ad\u30fc\u30de\u30d0\u30ea\u30c7\u30fc\u30bf\nclass JsonValidator {\npublic:\n    static bool validate_user(const json&amp; user) {\n        return user.contains(\"name\") &amp;&amp; user[\"name\"].is_string() &amp;&amp;\n               user.contains(\"age\") &amp;&amp; user[\"age\"].is_number() &amp;&amp;\n               user.contains(\"email\") &amp;&amp; user[\"email\"].is_string();\n    }\n\n    static std::vector&lt;std::string&gt; get_validation_errors(const json&amp; user) {\n        std::vector&lt;std::string&gt; errors;\n        if (!user.contains(\"name\") || !user[\"name\"].is_string()) {\n            errors.push_back(\"Invalid or missing name\");\n        }\n        if (!user.contains(\"age\") || !user[\"age\"].is_number()) {\n            errors.push_back(\"Invalid or missing age\");\n        }\n        if (!user.contains(\"email\") || !user[\"email\"].is_string()) {\n            errors.push_back(\"Invalid or missing email\");\n        }\n        return errors;\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">\u5927\u898f\u6a21JSON\u30c7\u30fc\u30bf\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u51e6\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ SAX\u30d1\u30fc\u30b5\u30fc\u3092\u4f7f\u7528\u3057\u305f\u5927\u898f\u6a21\u30d5\u30a1\u30a4\u30eb\u306e\u51e6\u7406\nclass JsonHandler {\npublic:\n    bool null() { return true; }\n    bool boolean(bool val) { return true; }\n    bool number_integer(number_integer_t val) { return true; }\n    bool number_unsigned(number_unsigned_t val) { return true; }\n    bool number_float(number_float_t val, const string_t&amp; s) { return true; }\n    bool string(string_t&amp; val) { return true; }\n    bool start_object(std::size_t elements) { return true; }\n    bool end_object() { return true; }\n    bool start_array(std::size_t elements) { return true; }\n    bool end_array() { return true; }\n    bool key(string_t&amp; val) { return true; }\n};\n\n\/\/ \u4f7f\u7528\u4f8b\nstd::ifstream i(\"large_file.json\");\njson::sax_parse(i, &amp;handler);<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30e1\u30e2\u30ea\u52b9\u7387\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30e1\u30e2\u30ea\u52b9\u7387\u306e\u826f\u3044JSON\u30d3\u30eb\u30c0\u30fc\nclass EfficientJsonBuilder {\nprivate:\n    json result;\n    std::vector&lt;json*&gt; stack;\n\npublic:\n    EfficientJsonBuilder() {\n        result = json::object();\n        stack.push_back(&amp;result);\n    }\n\n    void add_value(const std::string&amp; key, const json&amp; value) {\n        (*stack.back())[key] = value;\n    }\n\n    void start_object(const std::string&amp; key) {\n        (*stack.back())[key] = json::object();\n        stack.push_back(&amp;(*stack.back())[key]);\n    }\n\n    void end_object() {\n        if (!stack.empty()) {\n            stack.pop_back();\n        }\n    }\n\n    json get_result() {\n        return std::move(result);\n    }\n};<\/pre>\n\n\n\n<p>\u5b9f\u88c5\u6642\u306e\u6ce8\u610f\u70b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8003\u616e\u4e8b\u9805<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba\u306e\u9078\u629e<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u5272\u308a\u5f53\u3066\u306e\u6700\u5c0f\u5316<\/li>\n\n\n\n<li>\u4e0d\u8981\u306a\u30b3\u30d4\u30fc\u306e\u56de\u907f<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a8\u30e9\u30fc\u51e6\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u610f\u5473\u306e\u3042\u308b\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30ed\u30b0\u8a18\u9332<\/li>\n\n\n\n<li>\u30ea\u30ab\u30d0\u30ea\u30fc\u6226\u7565\u306e\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4fdd\u5b88\u6027\u306e\u78ba\u4fdd<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b3\u30fc\u30c9\u306e\u5206\u5272\u3068\u518d\u5229\u7528<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u62bd\u8c61\u5316\u30ec\u30d9\u30eb<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u5bb9\u6613\u6027\u306e\u78ba\u4fdd<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u5805\u7262\u3067\u52b9\u7387\u7684\u306aJSON\u30c7\u30fc\u30bf\u51e6\u7406\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-11\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u306e\u6975\u610f<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u512a\u5148\u3059\u308b\u30b3\u30c4<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30e1\u30e2\u30ea\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u30a2\u30ed\u30b1\u30fc\u30bf\u306e\u5b9f\u88c5\ntemplate&lt;typename T&gt;\nclass JsonPoolAllocator {\nprivate:\n    static constexpr size_t POOL_SIZE = 1024;\n    std::array&lt;T, POOL_SIZE&gt; pool;\n    std::bitset&lt;POOL_SIZE&gt; used;\n\npublic:\n    T* allocate(size_t n) {\n        if (n == 1) {\n            for (size_t i = 0; i &lt; POOL_SIZE; ++i) {\n                if (!used[i]) {\n                    used[i] = true;\n                    return &amp;pool[i];\n                }\n            }\n        }\n        return static_cast&lt;T*&gt;(::operator new(sizeof(T) * n));\n    }\n\n    void deallocate(T* p, size_t n) {\n        if (p &gt;= &amp;pool[0] &amp;&amp; p &lt; &amp;pool[POOL_SIZE]) {\n            used[p - &amp;pool[0]] = false;\n        } else {\n            ::operator delete(p);\n        }\n    }\n};\n\n\/\/ \u30a2\u30ed\u30b1\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u305fJSON\u30d1\u30fc\u30b5\u30fc\nusing json_with_pool = nlohmann::basic_json&lt;\n    std::map,\n    std::vector,\n    std::string,\n    bool,\n    std::int64_t,\n    std::uint64_t,\n    double,\n    JsonPoolAllocator\n&gt;;<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30e1\u30e2\u30ea\u30d5\u30c3\u30c8\u30d7\u30ea\u30f3\u30c8\u306e\u524a\u6e1b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5fc5\u8981\u306a\u578b\u3060\u3051\u3092\u6709\u52b9\u5316\u3057\u305fJSON\u30d1\u30fc\u30b5\u30fc\nstruct JsonTypes {\n    using object_t = std::unordered_map&lt;std::string, nlohmann::json&gt;;\n    using array_t = std::vector&lt;nlohmann::json&gt;;\n    using string_t = std::string;\n    using boolean_t = bool;\n    using number_integer_t = int32_t;  \/\/ 64\u30d3\u30c3\u30c8\u304b\u308932\u30d3\u30c3\u30c8\u306b\u524a\u6e1b\n    using number_unsigned_t = uint32_t;\n    using number_float_t = float;      \/\/ double\u304b\u3089float\u306b\u524a\u6e1b\n};\n\nusing lightweight_json = nlohmann::basic_json&lt;JsonTypes&gt;;\n\n\/\/ \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\nclass MemoryTracker {\npublic:\n    static size_t allocated;\n\n    static void* trace_alloc(size_t size) {\n        allocated += size;\n        return ::operator new(size);\n    }\n\n    static void trace_dealloc(void* ptr) {\n        ::operator delete(ptr);\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">\u51e6\u7406\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30fc\u30b9\u901f\u5ea6\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u9ad8\u901f\u30d1\u30fc\u30b5\u30fc\u306e\u5b9f\u88c5\nclass FastJsonParser {\npublic:\n    static json parse_with_sax(const std::string&amp; input) {\n        json::parser_callback_t cb = [](int \/*depth*\/, json::parse_event_t event, json&amp; parsed) {\n            return true;  \/\/ \u3059\u3079\u3066\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u53d7\u3051\u5165\u308c\u308b\n        };\n        return json::parse(input, cb);\n    }\n\n    \/\/ \u6587\u5b57\u5217\u306e\u30d7\u30ea\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\n    static json parse_with_reserve(const std::string&amp; input) {\n        json result;\n        result.get_ptr&lt;json::object_t*&gt;()-&gt;reserve(16);  \/\/ \u9069\u5207\u306a\u30b5\u30a4\u30ba\u3092\u4e88\u7d04\n        auto parsed = json::parse(input);\n        result = std::move(parsed);\n        return result;\n    }\n};\n\n\/\/ \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\ntemplate&lt;typename Func&gt;\ndouble measure_performance(Func&amp;&amp; func, int iterations = 1000) {\n    auto start = std::chrono::high_resolution_clock::now();\n    for (int i = 0; i &lt; iterations; ++i) {\n        func();\n    }\n    auto end = std::chrono::high_resolution_clock::now();\n    return std::chrono::duration&lt;double&gt;(end - start).count() \/ iterations;\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u901f\u5ea6\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u52b9\u7387\u7684\u306a\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\nclass FastJsonSerializer {\npublic:\n    static std::string serialize_optimized(const json&amp; j) {\n        std::string result;\n        result.reserve(j.dump().size() * 1.2);  \/\/ 20%\u4f59\u5206\u306b\u78ba\u4fdd\n\n        \/\/ \u30ab\u30b9\u30bf\u30e0\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u306e\u4f7f\u7528\n        auto formatter = [](const std::string&amp; str, \n                          json::serializer::output_adapter_t&lt;char&gt;&amp; out) {\n            std::copy(str.begin(), str.end(), \n                     json::serializer::output_adapter_t&lt;char&gt;::iterator(out));\n        };\n\n        j.dump(formatter);\n        return result;\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u975e\u540c\u671f\u51e6\u7406\u3068\u306e\u7d44\u307f\u5408\u308f\u305b\u65b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u975e\u540c\u671fJSON\u30d1\u30fc\u30b9<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u975e\u540c\u671f\u30d1\u30fc\u30b5\u30fc\u306e\u5b9f\u88c5\nclass AsyncJsonProcessor {\npublic:\n    static std::future&lt;json&gt; parse_async(const std::string&amp; input) {\n        return std::async(std::launch::async, [input]() {\n            return json::parse(input);\n        });\n    }\n\n    \/\/ \u30d0\u30c3\u30c1\u51e6\u7406\u7528\u306e\u975e\u540c\u671f\u30d1\u30fc\u30b5\u30fc\n    static std::vector&lt;std::future&lt;json&gt;&gt; parse_batch_async(\n        const std::vector&lt;std::string&gt;&amp; inputs) {\n        std::vector&lt;std::future&lt;json&gt;&gt; futures;\n        futures.reserve(inputs.size());\n\n        for (const auto&amp; input : inputs) {\n            futures.push_back(parse_async(input));\n        }\n        return futures;\n    }\n};\n\n\/\/ \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u305f\u4e26\u5217\u51e6\u7406\nclass JsonThreadPool {\nprivate:\n    ThreadPool pool;\n\npublic:\n    JsonThreadPool(size_t threads) : pool(threads) {}\n\n    template&lt;typename Func&gt;\n    auto enqueue(Func&amp;&amp; f) -&gt; std::future&lt;decltype(f())&gt; {\n        return pool.enqueue(std::forward&lt;Func&gt;(f));\n    }\n\n    void process_json_batch(const std::vector&lt;json&gt;&amp; batch, \n                          std::function&lt;void(const json&amp;)&gt; processor) {\n        std::vector&lt;std::future&lt;void&gt;&gt; futures;\n        futures.reserve(batch.size());\n\n        for (const auto&amp; item : batch) {\n            futures.push_back(pool.enqueue([item, processor]() {\n                processor(item);\n            }));\n        }\n\n        \/\/ \u5168\u3066\u306e\u51e6\u7406\u306e\u5b8c\u4e86\u3092\u5f85\u6a5f\n        for (auto&amp; future : futures) {\n            future.wait();\n        }\n    }\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u51e6\u7406\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u52b9\u7387\u7684\u306a\u30b9\u30c8\u30ea\u30fc\u30e0\u51e6\u7406\nclass JsonStreamProcessor {\npublic:\n    template&lt;typename Handler&gt;\n    static void process_stream(std::istream&amp; input, Handler&amp; handler) {\n        constexpr size_t BUFFER_SIZE = 4096;\n        std::array&lt;char, BUFFER_SIZE&gt; buffer;\n\n        json::parser parser;\n        while (input.good()) {\n            input.read(buffer.data(), BUFFER_SIZE);\n            parser.parse_stream(input, handler);\n        }\n    }\n};<\/pre>\n\n\n\n<p>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30e1\u30e2\u30ea\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u30a2\u30ed\u30b1\u30fc\u30bf\u306e\u9078\u629e<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u30d7\u30fc\u30eb\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u4e0d\u8981\u306a\u30b3\u30d4\u30fc\u306e\u524a\u6e1b<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u901f\u5ea6\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d1\u30fc\u30b9\u3068\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u306e\u52b9\u7387\u5316<\/li>\n\n\n\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u9078\u629e<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u975e\u540c\u671f\u51e6\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30bf\u30b9\u30af\u5206\u5272<\/li>\n\n\n\n<li>\u52b9\u7387\u7684\u306a\u540c\u671f\u6a5f\u69cb\u306e\u9078\u629e<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u9ad8\u6027\u80fd\u306aJSON\u30c7\u30fc\u30bf\u51e6\u7406\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-15\">\u73fe\u5834\u3067\u4f7f\u3048\u308bJSON\u30c7\u30fc\u30bf\u51e6\u7406\u5fdc\u7528\u4f8b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">REST API\u3068\u306e\u9023\u643a\u5b9f\u88c5\u4f8b<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>HTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u5b9f\u88c5<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ curl\u3092\u4f7f\u7528\u3057\u305fHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\nclass HttpClient {\nprivate:\n    CURL* curl;\n    std::string response_buffer;\n\n    static size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* userp) {\n        userp-&gt;append((char*)contents, size * nmemb);\n        return size * nmemb;\n    }\n\npublic:\n    HttpClient() {\n        curl = curl_easy_init();\n        if (!curl) {\n            throw std::runtime_error(\"Failed to initialize CURL\");\n        }\n    }\n\n    ~HttpClient() {\n        if (curl) {\n            curl_easy_cleanup(curl);\n        }\n    }\n\n    json get(const std::string&amp; url) {\n        response_buffer.clear();\n        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());\n        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);\n        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &amp;response_buffer);\n\n        CURLcode res = curl_easy_perform(curl);\n        if (res != CURLE_OK) {\n            throw std::runtime_error(curl_easy_strerror(res));\n        }\n\n        return json::parse(response_buffer);\n    }\n\n    json post(const std::string&amp; url, const json&amp; data) {\n        std::string post_data = data.dump();\n        response_buffer.clear();\n\n        struct curl_slist* headers = nullptr;\n        headers = curl_slist_append(headers, \"Content-Type: application\/json\");\n\n        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());\n        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post_data.c_str());\n        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);\n        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);\n        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &amp;response_buffer);\n\n        CURLcode res = curl_easy_perform(curl);\n        curl_slist_free_all(headers);\n\n        if (res != CURLE_OK) {\n            throw std::runtime_error(curl_easy_strerror(res));\n        }\n\n        return json::parse(response_buffer);\n    }\n};\n\n\/\/ API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u5b9f\u88c5\u4f8b\nclass WeatherApiClient {\nprivate:\n    HttpClient http;\n    std::string api_key;\n    std::string base_url;\n\npublic:\n    WeatherApiClient(const std::string&amp; key) \n        : api_key(key), base_url(\"https:\/\/api.weather.com\/v1\/\") {}\n\n    json get_current_weather(const std::string&amp; city) {\n        std::string url = base_url + \"current?city=\" + city + \"&amp;apikey=\" + api_key;\n        return http.get(url);\n    }\n\n    json get_forecast(const std::string&amp; city, int days) {\n        json request = {\n            {\"city\", city},\n            {\"days\", days}\n        };\n        return http.post(base_url + \"forecast\", request);\n    }\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>API\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\nstruct WeatherData {\n    double temperature;\n    double humidity;\n    std::string condition;\n    std::time_t timestamp;\n\n    \/\/ JSON\u304b\u3089\u306e\u5909\u63db\n    static WeatherData from_json(const json&amp; j) {\n        WeatherData data;\n        data.temperature = j[\"temp\"].get&lt;double&gt;();\n        data.humidity = j[\"humidity\"].get&lt;double&gt;();\n        data.condition = j[\"condition\"].get&lt;std::string&gt;();\n        data.timestamp = j[\"timestamp\"].get&lt;std::time_t&gt;();\n        return data;\n    }\n\n    \/\/ JSON\u3078\u306e\u5909\u63db\n    json to_json() const {\n        return {\n            {\"temp\", temperature},\n            {\"humidity\", humidity},\n            {\"condition\", condition},\n            {\"timestamp\", timestamp}\n        };\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-17\">\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u51e6\u7406\u306e\u5b9f\u88c5\u4f8b<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8a2d\u5b9a\u7ba1\u7406\u30af\u30e9\u30b9<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class ConfigManager {\nprivate:\n    json config;\n    std::string config_path;\n    std::mutex config_mutex;\n\npublic:\n    ConfigManager(const std::string&amp; path) : config_path(path) {\n        reload();\n    }\n\n    void reload() {\n        std::lock_guard&lt;std::mutex&gt; lock(config_mutex);\n        std::ifstream i(config_path);\n        if (!i.is_open()) {\n            throw std::runtime_error(\"Cannot open config file\");\n        }\n        config = json::parse(i);\n    }\n\n    template&lt;typename T&gt;\n    T get_value(const std::string&amp; key, const T&amp; default_value = T()) {\n        std::lock_guard&lt;std::mutex&gt; lock(config_mutex);\n        try {\n            return config.value(key, default_value);\n        } catch (const json::exception&amp; e) {\n            std::cerr &lt;&lt; \"Error reading config: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n            return default_value;\n        }\n    }\n\n    void set_value(const std::string&amp; key, const json&amp; value) {\n        std::lock_guard&lt;std::mutex&gt; lock(config_mutex);\n        config[key] = value;\n        save();\n    }\n\n    void save() {\n        std::ofstream o(config_path);\n        o &lt;&lt; std::setw(4) &lt;&lt; config &lt;&lt; std::endl;\n    }\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u968e\u5c64\u7684\u8a2d\u5b9a\u306e\u51e6\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u5b9a\u306e\u5b9f\u88c5\u4f8b\nclass AppSettings {\nprivate:\n    ConfigManager config;\n\npublic:\n    AppSettings() : config(\"settings.json\") {}\n\n    struct DatabaseSettings {\n        std::string host;\n        int port;\n        std::string username;\n        std::string password;\n\n        json to_json() const {\n            return {\n                {\"host\", host},\n                {\"port\", port},\n                {\"username\", username},\n                {\"password\", password}\n            };\n        }\n\n        static DatabaseSettings from_json(const json&amp; j) {\n            DatabaseSettings settings;\n            settings.host = j[\"host\"].get&lt;std::string&gt;();\n            settings.port = j[\"port\"].get&lt;int&gt;();\n            settings.username = j[\"username\"].get&lt;std::string&gt;();\n            settings.password = j[\"password\"].get&lt;std::string&gt;();\n            return settings;\n        }\n    };\n\n    DatabaseSettings get_database_settings() {\n        return DatabaseSettings::from_json(\n            config.get_value(\"database\", json::object())\n        );\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u306e\u9023\u643a\u5b9f\u88c5\u4f8b<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>JSON\u3068SQL\u306e\u9023\u643a<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ SQLite3\u3068\u306e\u9023\u643a\u4f8b\nclass DatabaseManager {\nprivate:\n    sqlite3* db;\n\npublic:\n    DatabaseManager(const std::string&amp; db_path) {\n        if (sqlite3_open(db_path.c_str(), &amp;db) != SQLITE_OK) {\n            throw std::runtime_error(\"Cannot open database\");\n        }\n    }\n\n    ~DatabaseManager() {\n        sqlite3_close(db);\n    }\n\n    \/\/ JSON\u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\n    void save_json_data(const std::string&amp; table, const json&amp; data) {\n        std::string sql = \"INSERT INTO \" + table + \" (data) VALUES (?)\";\n        sqlite3_stmt* stmt;\n\n        if (sqlite3_prepare_v2(db, sql.c_str(), -1, &amp;stmt, nullptr) != SQLITE_OK) {\n            throw std::runtime_error(\"Failed to prepare statement\");\n        }\n\n        std::string json_str = data.dump();\n        sqlite3_bind_text(stmt, 1, json_str.c_str(), -1, SQLITE_STATIC);\n\n        if (sqlite3_step(stmt) != SQLITE_DONE) {\n            sqlite3_finalize(stmt);\n            throw std::runtime_error(\"Failed to execute statement\");\n        }\n\n        sqlite3_finalize(stmt);\n    }\n\n    \/\/ JSON\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\n    json get_json_data(const std::string&amp; table, int id) {\n        std::string sql = \"SELECT data FROM \" + table + \" WHERE id = ?\";\n        sqlite3_stmt* stmt;\n\n        if (sqlite3_prepare_v2(db, sql.c_str(), -1, &amp;stmt, nullptr) != SQLITE_OK) {\n            throw std::runtime_error(\"Failed to prepare statement\");\n        }\n\n        sqlite3_bind_int(stmt, 1, id);\n\n        if (sqlite3_step(stmt) != SQLITE_ROW) {\n            sqlite3_finalize(stmt);\n            throw std::runtime_error(\"No data found\");\n        }\n\n        const unsigned char* data = sqlite3_column_text(stmt, 0);\n        json result = json::parse(reinterpret_cast&lt;const char*&gt;(data));\n\n        sqlite3_finalize(stmt);\n        return result;\n    }\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u51e6\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u30af\u30e9\u30b9\nclass TransactionManager {\nprivate:\n    DatabaseManager&amp; db;\n\npublic:\n    TransactionManager(DatabaseManager&amp; database) : db(database) {}\n\n    template&lt;typename Func&gt;\n    void execute_transaction(Func&amp;&amp; func) {\n        try {\n            db.execute(\"BEGIN TRANSACTION\");\n            func();\n            db.execute(\"COMMIT\");\n        } catch (const std::exception&amp; e) {\n            db.execute(\"ROLLBACK\");\n            throw;\n        }\n    }\n};<\/pre>\n\n\n\n<p>\u5b9f\u88c5\u6642\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>API\u9023\u643a<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u5fb9\u5e95<\/li>\n\n\n\n<li>\u30ea\u30c8\u30e9\u30a4\u6a5f\u69cb\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30ec\u30fc\u30c8\u5236\u9650\u3078\u306e\u5bfe\u5fdc<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u6a29\u9650\u7ba1\u7406<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u5bfe\u5fdc<\/li>\n\n\n\n<li>\u74b0\u5883\u5909\u6570\u3068\u306e\u9023\u643a<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u9023\u643a<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u4f8b\u306f\u3001\u5b9f\u969b\u306e\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u308b\u30d1\u30bf\u30fc\u30f3\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":{"0":"post-1865","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-cpp","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1865","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1865"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1865\/revisions"}],"predecessor-version":[{"id":1866,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1865\/revisions\/1866"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}