`
helloyesyes
  • 浏览: 1306892 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

JsonCpp的简单使用方法

阅读更多

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition – December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
JsonCpp 是一个C++用来处理JSON 数据的开发包。下面讲一下怎么使用JsonCpp来序列化和反序列化Json对象,以实际代码为例子。

反序列化Json对象

比如一个Json对象的字符串序列如下,其中”array”:[...]表示Json对象中的数组:
{“key1″:”value1″,”array”:[{"key2":"value2"},{"key2":"value3"},{"key2":"value4"}]},那怎么分别取到key1和key2的值呢,代码如下所示:

std::string strValue = “{\”key1\”:\”value1\”,\”array\”:[{\"key2\":\"value2\"},{\"key2\":\"value3\"},{\"key2\":\"value4\"}]}”;

Json::Reader reader;
Json::Value value;

if (reader.parse(strValue, value))
{
std::string out = value["key1"].asString();
std::cout << out << std::endl;
const Json::Value arrayObj = value["array"];
for (int i=0; i<arrayObj.size(); i++)
{
out = arrayObj[i]["key2"].asString();
std::cout << out;
if (i != arrayObj.size() – 1 )
std::cout << std::endl;
}
}

序列化Json对象

先构建一个Json对象,此Json对象中含有数组,然后把Json对象序列化成字符串,代码如下:

Json::Value root;
Json::Value arrayObj;
Json::Value item;
for (int i=0; i<10; i++)
{
item["key"] = i;
arrayObj.append(item);
}

root["key1"] = “value1″;
root["key2"] = “value2″;
root["array"] = arrayObj;
root.toStyledString();
std::string out = root.toStyledString();
std::cout << out << std::endl;

分享到:
评论

相关推荐

    JsonCpp 简易封装 v2.4

    下面我们将详细探讨JsonCpp的一些核心概念和使用方法: 1. **解析JSON数据**:JsonCpp 提供了`Json::Reader`类,它可以解析JSON格式的字符串或文件,将其转化为`Json::Value`对象。例如: ```cpp Json::Reader ...

    史上最详尽的JsonCpp使用指南(含c++封装的源代码)

    ### JsonCpp 使用指南 #### 一、JSON 数据格式与语法 JSON (JavaScript Object Notation) 是一种简洁且高效的数据交换格式。它源自于 JavaScript 的一部分语法,并被设计为跨平台和语言独立的数据交换标准。 ####...

    jsoncpp的简单使用

    在C++环境中,我们通常会使用库来处理JSON数据,其中jsoncpp是一个流行的选择。本篇文章将深入探讨如何使用jsoncpp库进行JSON数据的解析、创建和存储。 1. **jsoncpp库安装** 在开始使用jsoncpp之前,你需要将其...

    JsonCpp 简易封装 v2

    对JsonCpp做了简易封装,同时附带了将C++ 数据结构 struct 转换为JSON格式的用例,实现了基本数据类型的自动解析转换,v2版本支持对数据结构中的数组成员转换到Json方案。 使用方法:将代码包含进VC++项目,在源码中...

    JsonCPP 简易封装

    在"JsonCPP简易封装"项目中,作者对原始的JsonCPP库进行了封装,旨在降低使用门槛,简化API调用。基于JsonCPP r0.60版本,这个封装可能包括对关键功能的抽象和包装,以便于开发者更直观地进行JSON操作。 `...

    jsoncpp使用详解及示例

    在`jsoncppExample`中,可能包含了一个简单的示例程序,演示了如何使用JSONCPP读取、修改和写入JSON数据。这个示例可能包括以下步骤: 1. 包含必要的头文件。 2. 创建一个JSON字符串或读取一个JSON文件。 3. 使用`...

    JSONCPP使用-1

    总的来说,JSONCPP是一个强大且灵活的C++库,它使得处理JSON数据变得简单。通过学习和实践,你可以有效地在C++项目中集成JSON数据处理,无论是读取服务器响应还是存储本地配置文件,都会变得轻松自如。在实际开发中...

    JsonCpp 简易封装 v2.3

    总之,JsonCpp v2.3的简易封装为C++开发提供了强大的JSON处理能力,特别是对数组成员的支持,使得数据序列化和反序列化变得更加简单和高效。在使用时,开发者应当熟悉JsonCpp的API,并根据项目需求合理设计数据转换...

    Windows下编译和JSONCPP的使用入门

    解决方法是在编译JSONCPP的库时,确保使用与你的项目一致的运行时库类型。具体来说,可以通过以下步骤调整: 1. **打开项目属性** (`Properties`)。 2. **选择配置属性** (`Configuration Properties`)。 3. **转到...

    JsonCPP C++ 动态库的使用

    在“JsonCPP C++ 动态库的使用”这个主题中,我们将探讨如何在C++项目中集成和使用JsonCPP的动态库。动态库相比于静态库,具有节省存储空间、减少编译时间等优点,但需要运行时环境支持。 首先,你需要确保你的开发...

    qt4.8使用jsoncpp简单实例

    现在,我们创建一个简单的Qt项目,展示如何使用JSONCPP解析和生成JSON数据。首先,包含必要的头文件: ```cpp #include #include #include ``` 为了处理JSON数据,我们需要使用`Json::Value`类。下面是如何从...

    jsoncpp_JSON_jsoncpp_

    9. **编译与安装**:JSONcpp提供了详细的编译和安装指南,包括配置选项、依赖库等,使得在不同项目中集成JSONcpp变得简单。 通过理解并熟练使用JSONcpp,开发者可以轻松地在C++应用中处理JSON数据,实现与服务器或...

    mac下使用jsoncpp解析json - 小码农的csdn博客 - 博客频道 - CSDN.NET1

    在Mac环境下,开发过程中经常需要处理JSON数据,而`jsoncpp`是一个广泛使用的C++库,专门用于解析和生成JSON(JavaScript Object Notation)格式的数据。本文将详细介绍如何在Mac上使用`jsoncpp`库来解析JSON文件。 ...

    jsoncpp-0_c++jsoncpp_jsoncpp_jsoncpp-0.10.7_jsoncpp.lib_源码.zip

    总之,jsoncpp-0_c++jsoncpp_jsoncpp_jsoncpp-0.10.7_jsoncpp.lib_源码.zip提供了一个强大的工具,使得在C++项目中处理JSON数据变得更加简单和高效。通过学习和使用这个库,开发者可以快速地实现JSON数据的序列化和...

    jsoncpp1.94版本库

    总结来说,JsonCpp 1.94版本为C++开发者提供了全面的JSON支持,包括动态和静态链接库以及必要的头文件,使得在C++项目中集成和使用JSON变得简单易行。通过理解和掌握JsonCpp的使用,开发者可以更高效地处理JSON数据...

    jsoncpp-1.8.0.zip

    例如,你可以创建一个`json::Value`对象,填充其成员,然后使用`toStyledString()`方法将其转换为格式化的JSON文本,这对于输出日志或与远程服务器交互非常有用。 总的来说,jsoncpp-1.8.0是一个强大的JSON解析库,...

    jsoncpp 0.6.0.rc2

    因此,升级到最新版本的jsoncpp可能是最简单的解决方案。 4. **替代库**:如果以上方法都不可行,可以考虑使用其他支持多语言字符集的JSON库,如RapidJSON或nlohmann/json等。 压缩包中的“jsoncpp-src-0.6.0-rc2...

    超简单使用C++解析json:jsoncpp

     对于JSON格式,在此就不作详细的说明了,下面主要讨论下C++解析json文件的工具—Jsoncpp的使用。 下载地址: https://github.com/open-source-parsers/jsoncpp/tree/1.8.4 配置说明:  从github上download代码后...

    JsonCpp的基本使用

    JsonCpp作为C++中处理JSON的强大工具,其简洁的API使得解析和生成JSON变得简单。了解这些基本用法后,你可以在实际项目中灵活地使用JsonCpp进行数据交换。在实际操作中,确保根据你的JsonCpp版本选择正确的API,以便...

Global site tag (gtag.js) - Google Analytics