void HelloWorld::ParseJSON(JSONNode *n,CCMutableArray<CCObject *> *array,CCMutableDictionary<std::string,CCObject *> *dic,CCMutableDictionary<std::string,CCObject *> *dataDicLast)
{
if(n==NULL)
{
printf("擦 什么都没有你简析个屁了呀!滚蛋\n");
}

JSONNode::iterator iterator=n->begin();

while (iterator!=n->end())
{

//-------------------获取key
json_string stringKeyJson=iterator->name();

const string stdKeyString=to_std_string(stringKeyJson);

//printf("key====%s",stdKeyString.c_str());

//-------------------获取Value

const char stringValueJson=iterator->type();

//printf("type===%d\n",stringValueJson);

if(iterator->type()==JSON_ARRAY && stdKeyString!="")
{
CCMutableArray<CCObject *> *tempArray=new CCMutableArray<CCObject *>;

ParseJSON(&(*iterator),tempArray,NULL,NULL);

dataDicLast->setObject(tempArray, stdKeyString.c_str());

tempArray->release();
}
else if(iterator->type()==JSON_ARRAY)
{
CCMutableArray<CCObject *> *tempArray=new CCMutableArray<CCObject *>;

ParseJSON(&(*iterator),tempArray,NULL,NULL);

array->addObject(tempArray);

tempArray->release();
}

else if(iterator->type()==JSON_STRING && stdKeyString!="")
{
json_string valueJString=iterator->as_string();

std::string ValueCstring=to_std_string(valueJString);

CCString *valueString=new CCString(ValueCstring.c_str());

dataDicLast->setObject(valueString, stdKeyString.c_str());

valueString->release();
}

else if(iterator->type()==JSON_STRING)
{
json_string valueJString=iterator->as_string();

std::string ValueCstring=to_std_string(valueJString);

CCString *valueString=new CCString(ValueCstring.c_str());

array->addObject(valueString);

valueString->release();
}

else if(iterator->type()==JSON_NODE && stdKeyString!="")
{
CCMutableDictionary<std::string,CCObject *> *tempDic=new CCMutableDictionary<std::string,CCObject *>;

ParseJSON(&(*iterator),NULL,NULL,tempDic);

dataDicLast->setObject(tempDic, stdKeyString.c_str());

tempDic->release();
}
else
{
CCMutableDictionary<std::string,CCObject *> *tempDic=new CCMutableDictionary<std::string,CCObject *>;

ParseJSON(&(*iterator),NULL,NULL,tempDic);

dic->setObject(tempDic, stdKeyString.c_str());

tempDic->release();
}

iterator++;
}

}

转载于:https://blog.51cto.com/wangxu254/1313838

LibJson数据解析方法相关推荐

  1. 爬虫之常用数据解析方法

    爬虫之常用数据解析方法

  2. 以麦当劳,肯德基优惠券接口数据为例进行的数据解析方法,简单易懂

    以麦当劳,肯德基优惠券接口数据为例进行的数据解析方法,简单易懂,这是我个人觉得是一种比较简单易懂的json数据解析方法: 看下其中一个类的代码 package com.example.text_jso ...

  3. JSON三种数据解析方法

    JSON数据现在是我们开发中用的最多的,百分之九十的数据都是通过JSON方式进行传输,那么想要学好JSON解析就要了解什么是JSON数据,怎么快速解析它从而提升开发效率. 1 什么是JSON数据? 先 ...

  4. Day 10 10.1 数据解析方法之-BS4

    BS4 [1]简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: ''' Beautiful Soup提供一些简单的.python式的函数 ...

  5. iOS基础-数据解析方法初步总结-(XML,JSON欢迎指正)

    小时候的记忆与大家一起分享,愿君安好! 解析的基本概念 解析: 从事先规定好的格式中提取数据 解析的前提: 提前约定好格式,数据提供方按照格式提供数据,数据获取方则按照格式获取数据 OS开发常见的解析 ...

  6. 一个Python爬虫案例,带你掌握xpath数据解析方法!

    文章目录 xpath基本概念 xpath解析原理 环境安装 如何实例化一个etree对象: xpath('xpath表达式') xpath爬取58二手房实例 爬取网址 完整代码 效果图 xpath图片 ...

  7. 压电式雨量传感器RS485数据解析协议

    压电式雨量传感器产品概述 传感器由上盖.外壳和下盖组成,壳体内部有压电片和电路板,可以固定在外径50mm立柱上和气象站横杆上.传感器采用冲击测量原理对单个雨滴重量进行测算,进而计算降雨量.雨滴在降落过 ...

  8. Python-爬虫 (BS4数据解析)

    文章目录 1. BS4数据解析常见方法 2.BS4数据解析,爬取豆瓣电影属性 1. BS4数据解析常见方法 BS4数据解析方法是把需要的数据进行截取.处理数据的时间比较长 测试用网页: <!DO ...

  9. 爬虫之bs4、xpath数据解析(案例—scrapy获取菜鸟HTML页面数据)

    文章结构 1.爬虫概念简介 2.爬虫的流程 3.数据解析 (1)bs4解析 (I)根据标签名查找 soup.a (II)获取属性 soup.a[attr] (III)soup.a.text 获取响应文 ...

最新文章

  1. zookeeper适用场景:zookeeper解决了哪些问题
  2. REST POST PUT差别
  3. filezilla 设置服务器_java项目部署到linux服务器,微信小程序后台springboot项目部署到腾讯云服务器(图文详解)...
  4. P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles(简单dp)
  5. C语言作业二选择结构,C语言第二次作业参考答案选择结构.pdf
  6. PHP|Yii2下通过插件进行图片处理(亲测可用)
  7. TextView输入文字改变输入框大小
  8. SecureCRT连接阿里云ECS服务器,经常掉线的解决方案
  9. vue echarts数据变化重新渲染_vue实例创建及数据挂载渲染
  10. pudn下载地址的规律
  11. tensorflow gpu环境安装
  12. 【PhotoShop】用图片自带的alpha通道抠图
  13. excel入门/常用的技巧
  14. 亚马逊被人差评了怎么办?
  15. 对学习数据结构的建议
  16. ios获取系统自带的文字蓝色色值
  17. 删除html表里的数据,如何删除HTML表格行中表格数据之间的空白?
  18. python进阶_基础篇4(数据类型和列表)
  19. 递归方式实现打印一个整数的每一位
  20. linux内核中的copy_to_user和copy_from_user(一)

热门文章

  1. 云专网和云专线的区别_云专线的优势及应用场景
  2. 二进制在计算机电路中得到广泛的应用,模拟电子和数字电子技术的区别及应用...
  3. 神策 FM | 科学创造「高价值」人生,终止“瞎忙”式勤奋
  4. 数据驱动才是零售企业转型的核心!
  5. linux下升级python2.0到python3.0
  6. MRI炎症和结构损伤指标对TNF拮抗剂治疗AS患者获持续缓解的预测价值
  7. 用户名登陆的两种格式
  8. BlazeDS 整合 Flex HelloWorld 示例
  9. page和其它几个内置对象(转)
  10. 链接写不到txt文件该怎么办呢