MALOUDA-PSA 2024-02-20 21:11 采纳率: 90.1%
浏览 1
已结题

nlohamman解析json的问题3

同样是auto类型,第5行报错,第17行不报错,是啥原因啊?

error: no matching member function for call to 'value'
                        parsejsonbody(subItem.value());



1 bool parsejsonbody(const json& subit){
  2     // for (auto &subit11 :  subit.items()){
  3     if (subit.is_array()){ 
  4         for (const auto &subItem :  subit){
  5             parsejsonbody(subItem.value());
  6             }   
  7         }else if (subit.is_object()){
  8                     //else if(subit11alue().is_string()){
  9                     //          cout << "subit11: " <<  *subit11 << endl;
 10                     for (auto &subit22 : subit.items()) {
 11                         if (subit22.value().is_string()){
 12                             string vstri = subit22.value().get<string>();
 13                             cout << "it key: " <<  subit22.key() << endl;
 14                             cout << "it value: " <<  vstri << endl;
 15                         } else if (subit22.value().is_array() ||  subit22.value().is_object()){
 16                             cout << "subit11 is array " <<   endl;
 17                             parsejsonbody(subit22.value());
 18                         }   
 19                     }   
 20                 }   
 21                 return true;
 22                 }
  • 写回答

2条回答 默认 最新

  • GISer Liu 2024-02-20 21:12
    关注

    该回答引用自GPT-3.5,由博主GIS_Liu编写:

    问题的原因在于第5行和第17行的代码所处的上下文环境不同。

    第5行中的subItem是一个元素对象,而subItem.value()返回的是该元素对象的值。由于这里是处理数组的情况,subItem.value()返回的是数组元素的值,可能是基本类型或者是对象类型,因此可以直接调用parsejsonbody()函数来处理该值。

    而第17行中的subit22是一个键值对对象,subit22.value()返回的是该键值对对象的值。因为此时处理的是对象的情况,subit22.value()返回的是对象成员的值,同样可能是基本类型或者是对象类型。所以在这里调用parsejsonbody()函数时,需要传递对象成员的值作为参数。

    因此,需要修改第17行的代码,调用subit22.value()来获取对象成员的值,然后作为参数传递给parsejsonbody()函数。

    修改后的代码如下所示:

    parsejsonbody(subit22.value());
    

    这样就能解决问题了。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 已采纳回答 2月20日
  • 创建了问题 2月20日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改