为什么 boost::property_tree::write_json() 将整数值转换为字符串?这是不正确的。

Gri*_*iyn 5 c++ json boost

我的输入:data.txt

\n\n
{\n        "target_url":"www.19lou.com/forum-1637-thread-10031471311655793-1-1.html",\n        "trespassing_field":{\n            "ratetype":5,\n            "spider":{\n                "prod_name":"name",\n                "link_src":1 \n            }\n        }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用代码:

\n\n
boost::property_tree::ptree json_tree;\nboost::property_tree::read_json("data.txt", json_tree);\nstd::stringstream json_main_pack;\nboost::property_tree::write_json(json_main_pack, json_tree);\nLOG(NOTICE) << "json: " << json_main_pack.str();\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
{\n    "target_url": "www.19lou.com\\/forum-1637-thread-10031471311655793-1-1.html",\n    "trespassing_field": {\n        "ratetype": "5",\n        "spider": {\n            "prod_name": "name",\n            "link_src": "1"\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

write_json()将整数值转换为字符串。它转换"ratetype":5"ratetype": "5"。这是不正确的。\n如何准确转换\xef\xbc\x9f输入整数值,然后输出整数值。

\n

Kar*_*oll 7

从此处的Boost.PropertyTree 文档来看,似乎所有类型信息都丢失了。相关报价:

JSON 值映射到包含该值的节点。但是,所有类型信息都会丢失;数字以及文字“null”、“true”和“false”都简单地映射到它们的字符串形式。

强调我的。不幸的是,如果您想保留类型信息,您可能需要使用不同的 JSON 解析器。