簡體   English   中英

boost屬性樹無法在一個文件中讀取多個json數據

[英]boost property tree cannot read multiple json data in one file

我確實需要獲得幫助來確定我的問題。 我正在使用boost屬性樹來解析存儲在json文件中的twitter消息 所有消息都保存在一個json文件中,我需要一一解析。

這是保存在文件中的twitter json數據。 它有3條不同的消息。 (以下是扣除的消息僅用於測試)

{"id":593393012970926082,"in_reply_to_status_id":1,"user":{"id":2292380240,"followers_count":2},"retweet_count":0}
{"id":654878454684687878,"in_reply_to_status_id":7,"user":{"id":2292380241,"followers_count":4},"retweet_count":5}
{"id":123487894154878414,"in_reply_to_status_id":343,"user":{"id":2292380242,"followers_count":773},"retweet_count":654}

這是我的C ++代碼,用於使用屬性樹來解析消息。

#include <boost/property_tree/json_parser.hpp>

using namespace std;
using namespace boost::property_tree;
string jsonfile = "./twitter.json"; 

int main()
{  
    ptree pt;
    read_json( jsonfile, pt );
    cout<<"in_reply_to_status_id: "<<pt.get("in_reply_to_status_id",0)<<"\n";
}

我想從文件中獲取所有in_reply_to_status_id值。 現在,它僅打印第一行值。 結果是打印跟隨。

in_reply_to_status_id:1

我想獲得如下所有的值。

in_reply_to_status_id:1

in_reply_to_status_id:7

in_reply_to_status_id:343

如何從文件中獲取所有值。 請幫我。 非常感謝你。

您應該有正確的json文件,例如這樣

[
   {"id":593393012970926082,"in_reply_to_status_id":1,"user":{"id":2292380240,"followers_count":2},"retweet_count":0},
   {"id":654878454684687878,"in_reply_to_status_id":7,"user":{"id":2292380241,"followers_count":4},"retweet_count":5},
   {"id":123487894154878414,"in_reply_to_status_id":343,"user":{"id":2292380242,"followers_count":773},"retweet_count":654}
]

和代碼應該是這樣的

for (const auto& p : pt)
{
   cout << p.second.get("in_reply_to_status_id",0) << endl;
}

您可以使用BOOST_FOREACH代替基於range-based for for。

BOOST_FOREACH(const ptree::value_type& p, pt)

您可以看到我的示例,首先應該獲取子樹,然后對其進行解析。 我的代碼:

string str = "{\"key\":[{\"id\":1}, {\"id\":2}]}";
stringstream ss(str);
boost::property_tree::ptree parser, child;
boost::property_tree::json_parser::read_json(ss, parser);
child = parser.get_child("key");
for(auto& p : child)
    cout << p.second.get<uint32_t>("id") << endl;

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM