xml 和 json 在序列化数据方面的差异

在 [url=http://iunknown.iteye.com/blog/319063]spdatapickle[/url] 项目中,实现了在 C 的 structure 和 xml/json 之间自动转换的功能。需要选择一种 xml/json 的格式。在查看了一些其他语言的实现之后,json 的格式比较一致,xml 的格式就五法八门。不过从这里也可以看出,xml 能用的方法实在太多,太灵活了。json 的定义更接近于编程语言,格式就比较一致。xml 用于序列化数据的格式,比较著名的有 xmlrpc 。xmlrpc 的格式,冗余实在太大,并且还丢失了很多的信息。在 spdatapickle 中,仿照 json 设计了一套格式,比起 xmlrpc 少一些冗余。json 的格式倒是不用怎么设计,基本按 json 自身的定义来做就好了,和 php 的 json_encode/json_decode 完全一致。

列一下不同的格式出来的结果:

C 的 structure 的定义
[code]
typedef struct tagXYZPhoneNumber {
char mType[10];
int mPrimary;
char * mContent;
} XYZPhoneNumber_t;

XYZPhoneNumber_t phoneNumber;
memset( &phoneNumber, 0, sizeof( phoneNumber ) );

strncpy( phoneNumber.mType, "home", sizeof( phoneNumber.mType ) - 1 );
phoneNumber.mPrimary = 0;
phoneNumber.mContent = strdup( "12345678" );

[/code]

json 格式
[code]
len 54
{"Type": "home",
"Primary": 0,
"Content": "12345678"}
[/code]

spdatapickle xml 格式
[code]
len 96
<PhoneNumber>
<Type>home</Type>
<Primary>0</Primary>
<Content>12345678</Content>
</PhoneNumber>
[/code]

xmlrpc 格式
[code]
len 239
<struct>
<member>
<name>Type</name>
<value><string>home</string></value>
</member>
<member>
<name>Primary</name>
<value><i4>0</i4></value>
</member>
<member>
<name>Content</name>
<value><string>12345678</string></value>
</member>
</struct>
[/code]

在这里有人从另外的角度来分析了一下 xmlrpc 的缺点:
XML Matters: XML-RPC as object model
[url]http://www.ibm.com/developerworks/xml/library/x-matters15.html[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值