`
iunknown
  • 浏览: 409531 次
社区版块
存档分类
最新评论

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

    博客分类:
  • MISC
阅读更多
spdatapickle 项目中,实现了在 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 的定义
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" );



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


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


xmlrpc 格式
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>


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

分享到:
评论
2 楼 livetalk 2011-08-06  
fadsfadsfa
1 楼 livetalk 2011-08-06  
test

相关推荐

    xml & json 转换工具

    在实际开发中,为了确保数据的准确性和一致性,需要考虑XML和JSON的一些特性差异,例如XML支持命名空间,而JSON没有;XML有属性和元素,JSON只有键值对。此外,还要处理XML的注释、处理指令等非数据内容。 总的来说...

    C#写的Json与Xml互转支持.net framework2.0以上组件Newtonsoft.Json.dll

    在.NET开发环境中,数据交换和序列化经常是关键任务,其中JSON和XML是最常见的两种格式。本文将深入探讨如何在C#中使用Newtonsoft.Json.dll库进行JSON与XML之间的转换,特别关注对.NET Framework 2.0及以上版本的...

    XML与JSON之间转换--XMLSerializer类

    XML(Extensible Markup Language)和JSON(JavaScript Object Notation)是两种广泛用于数据交换的格式。它们各有特点,XML提供了一种结构化的、严格的、自解释的数据表示方式,适合复杂的数据结构;而JSON则以其...

    XMLto JSON 源码

    XML以其结构化和严谨的语法在Web服务和数据存储中占有重要地位,而JSON则因为其简洁和易于阅读的特性在现代Web应用程序中非常流行。在C#编程环境中,经常需要将XML数据转换为JSON格式,以适应轻量级的数据传输和前端...

    xml与json互转的源码

    在实际应用中,理解XML和JSON的结构差异,以及如何在两者之间进行有效转换,对于开发高效的数据交换解决方案至关重要。开发者应根据项目需求选择合适的转换策略,确保数据在不同系统间的无缝流动。

    XML String 转成JSON

    当我们需要在使用XML的系统和使用JSON的系统之间进行数据交互时,就需要将XML字符串转换为JSON格式。 XML是一种标记语言,它允许自定义标签来描述数据,并且支持嵌套结构。XML文档通常由元素、属性、文本内容等组成...

    Delphi Json/XML 解析类

    在Delphi编程环境中,处理JSON和XML数据是常见的任务,特别是在与Web服务交互或存储...通过深入学习这些类和相关的示例代码,你可以轻松地在Delphi项目中实现数据的序列化和反序列化,从而实现高效的数据交换和存储。

    redis使用过程中由于序列化工具引起的问题

    对于Java对象,推荐使用高效的JSON序列化库,如Jackson或Gson,它们支持配置以优化性能和数据大小。同时,确保在配置`RedisTemplate`时,为key和value指定适当的序列化器,避免使用默认配置,以防止潜在问题。 总之...

    json_xml互转jar

    JSON以其简洁明了的语法和高效的解析速度,常用于前后端的数据传输,而XML则因其丰富的结构化特性,在数据存储和跨平台通信中受到青睐。本文将探讨JSON与XML之间的转换,并围绕“json_xml互转jar”这个主题,介绍...

    序列化与反序列化示例

    这两个过程在数据交换、持久化存储、网络通信等方面有着广泛的应用。 首先,让我们来看看XML序列化。XML序列化是将.NET对象转换为XML文档的过程。这可以通过使用System.Xml.Serialization命名空间中的XmlSerializer...

    反序列化和序列

    5. 比较XML、JSON和protobuf三种序列化格式在数据大小和解析速度上的差异。 通过这些练习,你将深入理解序列化和反序列化的概念及其在实际应用中的重要性。同时,了解不同语言和库的实现方式,能帮助你更好地选择和...

    最全的.net序列化操作

    - **Json.NET (Newtonsoft.Json)**: 第三方库,提供JSON序列化,广泛应用于Web API和Web应用。 **3. C#中的序列化操作** - **对象到二进制序列化**:使用BinaryFormatter类,示例代码如下: ```csharp using System...

    序列化技术项目练习

    - **性能**:不同的序列化器在性能上会有差异,例如二进制序列化通常比XML或JSON序列化快。 - **兼容性**:选择的序列化格式应考虑与不同平台或系统之间的兼容性。 - **安全性**:序列化的数据可能会暴露敏感信息,...

    json_xml_transf-master

    通过"json_xml_transf-master"项目,开发者不仅可以学习CJSON库的使用,还能深入理解JSON和XML数据结构的差异以及如何在两者之间进行转换。这对于处理多平台、多系统间的数据交互问题至关重要,尤其是在需要兼容已有...

    C# 序列化源码 列车序列化的几种方式和例子

    在C#中,Json.NET库(Newtonsoft.Json)是广泛使用的JSON序列化工具。下面是如何使用它的示例: ```csharp using Newtonsoft.Json; // 序列化 string json = JsonConvert.SerializeObject(trainInstance); // 反...

    JS实现的JSON序列化操作简单示例

    ### JSON序列化操作概念 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集。JSON序列化是将对象转换为JSON格式字符串的过程。这一过程在Web开发中十分常见,尤其在前后...

    序列化与持久化相同点跟不同点

    或者使用XML、JSON等方式将对象序列化后存储在文件中。 4. **性能考量:** - **序列化**过程中可能会消耗较多的计算资源,尤其是当对象图很大时。 - **持久化**除了要考虑数据的存储效率外,还需要考虑查询性能等...

    MapToXMLAndXMLToJson.zip

    XML到JSON的转换需要注意保持数据的一致性和完整性,因为XML和JSON在数据表示上有一定的差异。例如,XML的命名空间、注释、处理指令等在JSON中没有直接的对应,需要特殊处理。同时,XML的层次结构和JSON的嵌套对象/...

    json例子和demo

    JSON(JavaScript ...同时,了解和掌握XML和JSON两者之间的差异和应用场景也非常重要,因为它们在不同的场景下各有优势。XML提供更严谨的结构和丰富的元数据支持,而JSON则以其简洁和易用性在许多情况下成为首选。

    4.14.4.8可序列化标签1

    在编程和数据处理领域,序列化是一个至关重要的概念,它涉及到将对象的状态转换为可以存储或传输的数据格式,如XML。在本节中,我们将详细探讨4.14.4.8版本中的“可序列化标签”,这是一种特殊类型的标签,不仅具备...

Global site tag (gtag.js) - Google Analytics