栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用jsoncpp解析JSON字符串

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用jsoncpp解析JSON字符串

您的问题是:没有 root [“ name”] 。您的文档应如下所示:

{ "people": [{"id": 1, "name":"MIKE","surname":"TAYLOR"}, {"id": 2, "name":"TOM","surname":"JERRY"} ]}

和你的代码是这样的:

void depre(){    string text ="{ "people": [{"id": 1, "name":"MIKE","surname":"TAYLOR"}, {"id": 2, "name":"TOM","surname":"JERRY"} ]}";    Json::Value root;    Json::Reader reader;    bool parsingSuccessful = reader.parse( text, root );    if ( !parsingSuccessful )    {        cout << "Error parsing the string" << endl;    }    const Json::Value mynames = root["people"];    for ( int index = 0; index < mynames.size(); ++index )    {        cout << mynames[index] << endl;    }}

如果您想按原样保留数据:

void depre(){  //string text ="{ "people": [{"id": 1, "name":"MIKE","surname":"TAYLOR"}, {"id": 2, "name":"TOM","surname":"JERRY"} ]}";  string text ="{ "1": {"name":"MIKE","surname":"TAYLOR"}, "2": {"name":"TOM","surname":"JERRY"} }";  Json::Value root;  Json::Reader reader;  bool parsingSuccessful = reader.parse( text, root );  if ( !parsingSuccessful )  {    cout << "Error parsing the string" << endl;  }  for( Json::Value::const_iterator outer = root.begin() ; outer != root.end() ; outer++ )  {    for( Json::Value::const_iterator inner = (*outer).begin() ; inner!= (*outer).end() ; inner++ )    {      cout << inner.key() << ": " << *inner << endl;    }  }}

使用迭代器直接遍历根对象(不要将其视为数组。

如果 Json :: Reader 不起作用,请尝试使用 Json :: CharReader

void depre(){  string text ="{"1":{"name":"MIKE","surname":"TAYLOR"},"2":{"name":"TOM","surname":"JERRY"}}";  Json::CharReaderBuilder builder;  Json::CharReader * reader = builder.newCharReader();  Json::Value root;  string errors;  bool parsingSuccessful = reader->parse(text.c_str(), text.c_str() + text.size(), &root, &errors);  delete reader;  if ( !parsingSuccessful )  {    cout << text << endl;    cout << errors << endl;  }  for( Json::Value::const_iterator outer = root.begin() ; outer != root.end() ; outer++ )  {    for( Json::Value::const_iterator inner = (*outer).begin() ; inner!= (*outer).end() ; inner++ )    {      cout << inner.key() << ": " << *inner << endl;    }  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668839.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号