2015-03-24 28 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往返,除了類型信息丟失。

相關問題