2015-03-24 33 views
3

当我使用int的put_value时,它会被写为字符串。有谁知道如何让它打印为int?如何获得提升json使用正确的数据类型

#include <iostream> 
#include <boost/property_tree/ptree.hpp> 
#include <boost/property_tree/json_parser.hpp> 

using boost::property_tree::ptree; 
using namespace std; 

int main(int argc, char* argv[]) { 

    ptree node; 
    node.put("string", "text here"); 
    node.put("int", 1);//outputs as "1" and should be 1 
    write_json(cout, node, false);//{"string":"text here","int":"1"} 

    return 0; 
} 
+0

只有'int main()'和'int main(int argc,char * argv [])'符合标准。 – 2015-03-24 22:06:31

+2

@NeilKirk你为什么评论这个? – sehe 2015-03-24 23:53:26

+0

@sehe因为他的主要不符合标准? – 2015-03-25 04:57:26

回答

4

图书馆明确不支持它。

Boost属性库尚未命名为“Boost Json Library”,因为它不是JSON库。相反,它是一个属性树库(发生在的目的下使用 JSON子集)。

documentation

属性树集不会打字,并且不支持阵列本身。因此,使用以下JSON /属性树映射:

  • JSON对象映射到节点。每个属性都是一个子节点。
  • JSON数组映射到节点。每个元素都是一个空名称的子节点。如果一个节点同时具有已命名和未命名的子节点,则无法将其映射到JSON表示。
  • JSON值映射到包含该值的节点。 但是,所有类型的信息都会丢失;数字以及文字“null”,“true”和“false”只是映射到它们的字符串形式。
  • 无法映射包含子节点和数据的属性树节点。

而且

JSON往返,除了类型信息丢失。

相关问题