cainiao3925
cainiao3925
采纳率100%
2019-12-27 11:55

c++用jsoncpp读取json文件并,有数千个数据,求把这些数据转成数组?

已采纳

我有一个json文件,现在想把里面的数据读取出来,并转化为数组或是线性表。
文件是这样的,有数千个类似的这样的。我在网上找了很多的教程,但是里面的例子一般都是直接
int comment = root["comment"].asInt();
但是我这里有数千个,而且后面要统计from相同的数量等等,所以想用数组或者是线性表来存储,方便后面。
因为是第一次接触json,完全菜鸟,所以很多概念都不了解,希望各位大神能够给一些简单一点的回答,非常感谢

[
{
"comment": 0,
"from": "北京-北京市-海淀区",
"comments": [],
"to": "河北省-承德市-隆化县",
"score": "0",
"corp": "兴铁物流",
"time": "1398175318.988036"
},
void readFileJson()
{

根据网上的教程就写了一点点,我把添加到了源文件那里,可是好像打不开,运行的话就直接弹出Error poening file
void readFileJson()

{

Json::Reader reader;//json解析
Json::Value root;//表示一个json格式的对象 
ifstream in("rating(1).json", ios::binary);

if (!in.is_open())
{
    cout << "Error opening file\n";
    return;
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • qq_25048473 铲灰 2年前

    int main()
    {
    ifstream infile;
    ///这里好像要有用绝对路径
    infile.open("/home/xxx/xxx/xxx/data.json", ios::binary);
    if (!infile.is_open())
    {
    cout << "file open failure" << endl;
    return 0;
    }
    std::string data;
    char str[1000] = {0};
    while(!infile.eof())
    {
    infile>>str;
    data += str;
    memset(str, 0, sizeof(str));
    }
    infile.close();
    Json::Reader reader;
    Json::Value root;
    if (!reader.parse(data.c_str(), root))
    {
    return -1;
    }
    cout << root << endl;
    return 0;
    }

    ------json数据,json数据最后一个元素后不能跟逗号(,)--------
    [
    {
    "comment": 0,
    "from": "北京-北京市-海淀区",
    "comments": [],
    "to": "河北省-承德市-隆化县",
    "score": "0",
    "corp": "兴铁物流",
    "time": "1398175318.988036"
    },
    {
    "comment": 0,
    "from": "北京-北京市-海淀区",
    "comments": [],
    "to": "河北省-承德市-隆化县",
    "score": "0",
    "corp": "兴铁物流",
    "time": "1398175318.988036"
    }
    ]

    点赞 1 评论 复制链接分享