JsonCpp操作数组对象

JsonCpp操作数组对象

概述

​ Json格式数据中,除了简单的String类型和一些非String类型,也有像各种高级语言中的数组类型一般的数组对象,且Json数组在实际开发中使用频率也比较高,这里就记录一些对于Json数组的常规操作。

JsonCpp操作简单数组对象

​ Json数组对象以”[]”进行包裹,方括号内的元素即是数组的元素。数组的元素可以是一些基本的Json类型,也可以是一些复杂的Json对象,刚开始就说一下对于元素为基本Json类型的数组如何操作,这里先给出一个简单的Json数组例子:

[ 1, 2, 3, 4 ]
  • 1

​ 上述例子则表示了一个结构简单的Json数组,取其中元素的操作如各高级语言一般,可以使用”[]” + Index的方式,回顾上一篇JsonCpp的介绍,要取出Json数据中的某个元素的值,则应该将代表该数据的对象先获取得到,使用”[]” + Index即是获取了代表该数据的对象,之后再根据Json数据中的数据类型去执行Json::Value的成员方法asType(Type指代某种Json类型)。下面给出操作上述例子的Json数组的代码:

//
//  main.cpp
//  TestJson
//
// Created by Morris on 2016/11/21. // Copyright © 2016年 Morris. All rights reserved. // #include <iostream> #include <fstream> #include <string> #include <json/json.h> int main(int argc, const char * argv[]) { std::ifstream ifs; ifs.open("/Users/Morris/Code/cpp/test/test.json"); Json::Value val; Json::Reader reader; if (!reader.parse(ifs, val)) { return -1; } int sz = val.size(); for (int i = 0; i < sz; ++i) { std::cout << "Element " << i + 1 << ": "; std::cout << val[i].asInt(); std::cout << std::endl; } return 0; }

 

JsonCpp操作复杂Json数组

​ 对于Json数组,还有另外的一些复杂的情况,如Json数组是某一Json对象的一部分,或者Json数组中元素是复杂的Json对象。这两种情况在Json的实际运用中出现的次数还比较频繁,先说第一种,Json数组是某一Json对象的一部分,先给出一个具体的例子:

{
    "Name": "Morris", 
    "Skills": [ "Basketball", "Sing", "Play Games", "Program" ] }
  • 1
  • 2
  • 3
  • 4

​ 名为Skills的Json数组为Json对象的一个属性,获取Skills中具体数据的方法,则是先获取该Json数组对象,如获取Json对象的属性一般使用key值即可从Json对象中获取到相应的属性,之后再使用上面提到的Json数组操作方式即可进行对于Json数组元素的操作了,具体代码如下:

//
//  main.cpp
//  TestJson
//
// Created by Morris on 2016/11/21. // Copyright © 2016年 Morris. All rights reserved. // #include <iostream> #include <fstream> #include <string> #include <json/json.h> int main(int argc, const char * argv[]) { std::ifstream ifs; ifs.open("/Users/Morris/Code/cpp/test/test.json"); Json::Value val; Json::Reader reader; if (!reader.parse(ifs, val)) { return -1; } int sz = val["Skills"].size(); for (int i = 0; i < sz; ++i) { std::cout << "Element " << i + 1 << ": "; std::cout << val["Skills"][i].asString(); std::cout << std::endl; } return 0; }

​ 对于Json数组的另一种比较复杂的情况,Json数组元素是对象,看过上面的叙述,应该也比较容易想到操作方式了。即先获取Json数组对象,之后再以Index方式获取到数组中单个元素,再对单个元素以操作Json对象的方式操作即可。具体代码不贴出来了,可以自己试着编写一下。

转载于:https://www.cnblogs.com/wangjian8888/p/8558773.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值