- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章C++常用函数之XML JSON格式转换问题由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
数据格式在编程里面很常见,不同的系统都会有自己的标准。因为给有各的定义,每次做第三方开发系统对接的时候数据格式标准都是头疼的事情.
在开发过程中比较常见的比如有Json、XML、Key-Value等。这里我们就先看看Json和XML。两者的转换有很多开源的代码可以使用,而且也很完善,可以参考xml2json、xsltjson.
XML在Json出现前应用很广泛,灵活性好,应用语言也没有限制,发展了这么长时间后xml标准已经很臃肿。这里可以查看XML的标准XML标准。在C++里面解析和操作XML的库也有不少,tinyxml 就是个不错的选择,体积少、简单、高效的开源库,现在已经发布了TinyXml-2. 。
Json出来后立即被很多高级语言作为了标准推荐使用,如果想了解Json的定义请点击这里:JSON定义 。
XML2Json & Json2XML 。
接下来,我想做个简单的函数来转换.
1
2
3
4
5
6
7
|
<xml>
<appid>appid-value111111</appid>
<mch_id>mch_id-value22222</mch_id>
<nonce_str>nonce_str-value3333333</nonce_str>
<transaction_id>transaction_id-value44444444</transaction_id>
<sign>sign-value5555555555</sign>
</xml>
|
上面的报文是在三方支付里面常见的报文,这次我们来实现对这段报文的Json格式的自由转换.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#include <string>
#include <iostream>
#include "tinyxml2.h"
#include "nlohmann/json.hpp"
using
json = nlohmann::json;
using
namespace
tinyxml2;
using
namespace
std;
string xml2json(string &src)
{
XMLDocument doc;
doc.Parse( src.c_str() );
json root;
XMLElement* rootElement = doc.RootElement();
XMLElement* child = rootElement->FirstChildElement();
while
(child) {
const
char
* id="codetool">
这次我们使用tinyxml2 和nlohmann json 做转换,需要将两者的头文件和源代码文件下载,并在编译中include. nolhmann json 需要C++ 11 的支持,gcc版本需要在4.7以上. 可以使用下面命令编译 g++ -std=c++11 xmljson.cpp tinyxml2.cpp -I./ 。
C++常用函数 XML JSON格式转换https://www.cppentry.com/benc... 。 开发资料https://www.cppentry.com 。 知识点扩展:C++常用的系统函数 。 数学<math.h>: 1 三角函数 。 double sin (double); double cos (double); double tan (double), 2 反三角函数 。 double asin (double); 结果介于[-PI/2, PI/2] double acos (double); 结果介于[0, PI] double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2] double atan2 (double, double); 反正切(整圆值), 结果介于[-PI/2, PI/2] 。 3 双曲三角函数 。 double sinh (double); double cosh (double); double tanh (double), 4 指数与对数 。 double exp (double x); e的x次幂 double pow (double x, double y); x的y次幂 double sqrt (double); double log (double x); 以e为底的对数,即ln x double log10 (double x);log10(x) 以10为底. 没有以2为底的函数但是可以用换底公式解 决:log2(N)=log10(N)/log10(2) 。 5 取整 。 double ceil (double); 不小于x的最小整数 double floor (double); 不大于x的最大整数 。 6 绝对值 。 int abs(int);整型 long labs(long);长整型 double fabs (double);浮点型 。 7 标准化浮点数 。 double frexp (double f, int p); 标准化浮点数, f = x 2^p, 已知f求x, p ( x介于[0.5, 1] ) double ldexp (double x, int p); 与frexp相反, 已知x, p求f 。 8 取整与取余 。 double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分 double fmod (double, double); 返回两参数相除的余数 。 9.平方根 。 double sqrt(double x), 字符<ctype.h>: int isalpha(int c);c是否为字母 int isdigit(int c);c是否为数字 int tolower(int c);将c转换为小写字母 int toupper(int c);将c转换为大写字母 。 字符串<string.h> char strcpy(char sl,char s2);将字符串s2复制给s1,即覆盖 unsigned strlen(char sr);求字符串str长度 。 内存操作<memory.h> void memcpy(void d,void *s,int c);将s指向的内存区域的c个字节复制到d指向的区域 。 类型转换<stdlib.h> int atoi(char s);将字符串转化为整数 char itoa(int v,char *s,int x);将整数v按x进制转成字符串s 。 时间<time.h> time_t time(time_t *timer);返回1970/1/1零点到目前的秒数 。 其他<stdlib.h> srand(unsigned seed);设置随机数的种子 int rand();产生0-RAND_MAX的随机数 exit(int);终止正在执行的程序 。 keep going 。 到此这篇关于C++常用函数之XML JSON格式转换问题的文章就介绍到这了,更多相关c++ xml json格式转换内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。 原文链接:https://segmentfault.com/a/1190000021868557 。
|
最后此篇关于C++常用函数之XML JSON格式转换问题的文章就讲到这里了,如果你想了解更多关于C++常用函数之XML JSON格式转换问题的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
有没有办法使用 Clojure format(基于 java.util.Formatter)或 cl-format(基于 Common Lisp 的format) 以编程方式设置空格填充?如果您事先知
我正在尝试创建一个用户实体以及数据/文件(pdf格式)。上传并保存到数据库很好,但是当我让用户进入 postman 时尝试发送获取请求方法,然后在数据字段中显示一些糟糕的数据,而且我无法在数据库中看到
我必须将值为 {"STX","ETX"} 的普通字符串数组转换为十六进制值,并且我应该根据 http://www.asciitable.com/ 得到 {2,3} . 最佳答案 听起来你想要一个 Ma
我想格式化我的代码,但不确定哪种格式类型最适合我的项目需要。 我发现仅对于 dart 和 flutter 项目(我都有),有不止一个选项可用于格式化编程语言/框架中预先构建的代码。 Dart : da
我已经尝试了多个代码,例如这样 Sub DateFixer() Application.ScreenUpdating = False Application.Calculation =
SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.add("wt","csv"); server.query(query)
我有一个包含多个字符串的数据库,我从查询中获取了这些记录,并且我在 QString 中收到了这种格式的数据: "Mon, 13 Nov 2017 09:48:45 +0000" 所以,我需要根据文化来
我有一个 Delphi 2007 DBGrid,我想让用户以更新的 Excel 格式 (OOXML) 保存它,但我的标准是用户不需要安装 Excel。有没有人知道任何已经这样做的组件?是的,我已经搜索
我正在我们的普通 html 站点旁边创建一个移动站点。使用 rails 3.1。移动站点在子域 m.site.com 中访问。 我已经定义了移动格式(Mime::Type.register_alias
我正在尝试使用 xmlstarlet 格式化 xml 文件,但我不想创建新的 xml 文件。 我试过了 xmlstarlet fo --inplace --indent-tab --omit-decl
我在 A 列中有一个带有文本的电子表格。 例如 A1=MY TEXT1 A2=MY TEXT2 A3=MY TEXT3 A4=MY TEXT4 A5=MY TEXT5 我想在文本的前后添加撇号 结果是
我想做一些源代码转换(自动导入列表清理),我想保留注释和格式。我听说过一些关于解析器这样做的事情,我认为是 ghc 解析器。 看起来我可以通过从文件中提取内容来使用 hs-src-exts Langu
我在 Excel 中工作,我想根据另一张表中的列表找出一张表中是否有匹配项。 我已将值粘贴到列表中,并希望从另一张表中返回它们的相应值。包含字母和数字的单元格可以正常工作(例如:D5765000),但
我有一个 DurationField在我的模型中定义为 day0 = models.DurationField('Duration for Monday', default=datetime.time
我正在为我的应用程序开发 WMI 查询。它需要为给定的 VID/PID 找到分配的虚拟 COM 端口。使用 WMI Code Creator 我发现...... 命名空间:root\CIMV2 类:W
我试图弄清楚如何使用 NSTextList,但除了 this SO question 之外,在网上几乎没有找到有用的信息。和 the comment in this blog . 使用这个我已经能够创
我要查询all_objects表在哪里last_ddl_time='01 jan 2010'但它拒绝日期格式... 任何机构给我查询的确切格式? 最佳答案 正如 AKF 所说,您应该使用 Trunc除
我试图在我的应用程序中实现聊天功能。我使用了 2 个 JEditorPane。一个用于保存聊天记录,另一个用于将聊天发送到前一个 JEditorPane。 JEditorPane 是 text/h
我在大学里修了一个编译器类(class),内容非常丰富,很有趣,尽管也很多工作。既然给了我们要实现的语言规范,所以我学不到的一件事就是语言设计。我现在正在考虑创建一种有趣的简单玩具语言,以便我可以玩耍
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我是一名优秀的程序员,十分优秀!