用 jsonCpp 序列化、反序列化 json 字符串

2024-06-10 12:18

本文主要是介绍用 jsonCpp 序列化、反序列化 json 字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接:http://www.cnblogs.com/ggjucheng/archive/2012/01/03/2311107.html

前言
JSON是一个轻量级的数据定义格式,比起XML易学易用,
而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择
JSON 的全称为:JavaScript Object Notation ,顾名思义,
JSON 是用于标记 javascript 对象的,详情参考 http://www.json.org/。
本文选择第三方库 JsonCpp 来解析 json, JsonCpp 是比较出名的 c++ 解析库,在 json 官网也是首推的。
JsonCpp 简介
JsonCpp 主要包含三个类:Value Reader Writer
jsoncpp 中所有对象、类名都在 namespace json 中,包含 json.h 即可。
注意:
Json::Value 只能处理 ANSI 类型的字符串,如果 C++ 程序使用 Unicode 编码的,最好加一个 Adapt 类来适配。
反序列化 Json 对象
假设有一个 json 对象如下:

{"name": "json″,"array": [{"cpp": "jsoncpp"},{"java": "jsoninjava"},{"php": "support"}]
}
我们要实现这个 json 的反序列号代码如下:
using namespace std;
using namespace Json;void readJson() {string strValue = "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}";Reader reader;Value value;if (reader.parse(strValue, value)) {string out = value["name"].asString();cout << out << endl;const Json::Value arrayObj = value["array"];for (unsigned int i = 0; i < arrayObj.size(); i++) {if (!arrayObj[i].isMember("cpp")) {continue;}out = arrayObj[i]["cpp"].asString();cout << out;if (i != (arrayObj.size() - 1)) {cout << endl;}}}   
}
序列化 Json 对象
using namespace std;void writeJson() {Json::Value root;Json::Value arrayObj;Json::Value item;item["cpp"] = "jsoncpp";item["java"] = "jsoninjava";item["php"] = "support";arrayObj.append(item);root["name"] = "json";root["array"] = arrayObj;root.toStyledString();string out = root.toStyledString();cout << out << endl;
}

这篇关于用 jsonCpp 序列化、反序列化 json 字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048138

相关文章

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp