加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

JsonCpp操作数组对象

发布时间:2020-12-16 18:51:23 所属栏目:百科 来源:网络整理
导读:JsonCpp操作数组对象 概述 ? Json格式数据中,除了简单的String类型和一些非String类型,也有像各种高级语言中的数组类型一般的数组对象,且Json数组在实际开发中使用频率也比较高,这里就记录一些对于Json数组的常规操作。 JsonCpp操作简单数组对象 ? Json

JsonCpp操作数组对象

概述

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

JsonCpp操作简单数组对象

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

[ 1,2,3,4 ]

? 上述例子则表示了一个结构简单的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" ] }

? 名为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,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对象的方式操作即可。具体代码不贴出来了,可以自己试着编写一下。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读