数据格式在编程里面很常见,不同的系统都会有自己的标准。因为给有各的定义,每次做第三方开发系统对接的时候数据格式标准都是头疼的事情。
在开发过程中比较常见的比如有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... 知识点扩展:C++常用的系统函数 数学<math.h>: 1 三角函数
double sin (double); 2 反三角函数
double asin (double); 结果介于[-PI/2, PI/2] 3 双曲三角函数
double sinh (double); 4 指数与对数
double exp (double x); e的x次幂 没有以2为底的函数但是可以用换底公式解 决:log2(N)=log10(N)/log10(2) 5 取整
double ceil (double); 不小于x的最小整数 6 绝对值
int abs(int);整型 7 标准化浮点数
double frexp (double f, int p); 标准化浮点数, f = x 2^p, 已知f求x, p ( x介于[0.5, 1] ) 8 取整与取余
double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分 9.平方根 double sqrt(double x); 字符<ctype.h>:
int isalpha(int c);c是否为字母 字符串<string.h>:
char strcpy(char sl,char s2);将字符串s2复制给s1,即覆盖 内存操作<memory.h>: void memcpy(void d,void *s,int c);将s指向的内存区域的c个字节复制到d指向的区域 类型转换<stdlib.h>:
int atoi(char s);将字符串转化为整数 时间<time.h>: time_t time(time_t *timer);返回1970/1/1零点到目前的秒数 其他<stdlib.h>:
srand(unsigned seed);设置随机数的种子 keep going 到此这篇关于C++常用函数之XML JSON格式转换问题的文章就介绍到这了,更多相关c++ xml json格式转换内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家! 原文链接:https://segmentfault.com/a/1190000021868557 延伸 · 阅读
精彩推荐
|