php json与xml序列化/反序列化

简介:

在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记

简单数组json格式序列化/反序列化

php提供了json_encode和json_decode函数对对象进行json格式序列化/反序列化操作

复制代码
$data=array('Name'=>'Byron','Age'=>24,'Sex'=>'Male','Friends'=>array('Casper','Frank','Vincent'));
    
    $json=json_encode($data);//将数组序列化为json字符串
    echo $json.'<br/>';

    $array_json= json_decode($json);//将json字符串反序列化为数组
    while(list($key,$value)=each($array_json)){
        if(!is_array($value)){
            echo "$key: $value<br/>";
        }else{
            echo "$key: ";
            foreach ($value as $current) {
                echo "$current &emsp;";
            }
            echo '<br/>';
        }
    }
复制代码

image

简单数组xml格式序列化/反序列化

php提供wddx_serialize_value和wddx_deserialize函数对对象进行xml格式序列化/反序列化操作

复制代码
$data=array('Name'=>'Byron','Age'=>24,'Sex'=>'Male','Friends'=>array('Casper','Frank','Vincent'));
    $xml=wddx_serialize_value($data);//把数组序列化为xml字符串
     echo $xml.'<br/>';
    $array_xml=wddx_deserialize($xml);//把xml字符串反序列化为数组

    while(list($key,$value)=each($array_xml)){
        if(!is_array($value)){
            echo "$key: $value<br/>";
        }else{
            echo "$key: ";
            foreach ($value as $current) {
                echo "$current &emsp;";
            }
            echo '<br/>';
        }
    }
复制代码

image

 

虽然由于HTML转码原因,输出格式很奇怪,但其实序列化的字符串是这样的

image

和json格式相比较的话,多出来不少字段

复杂对象json格式序列化/反序列化

很多时候我们在进行操作的时候,处理的对象并不是简单数组,而是我们自定义的一个对象的数组,json_encode和json_decode也是可以胜任的。自定义一个和上面数组内容类似的对象

复制代码
class Me
    {
        public $name;
        public $age;
        public $friends;
        function __construct($name,$age,$friends)
        {
            $this->name=$name;
            $this->age=$age;
            $this->friends=$friends;
        }
    }
复制代码

 

复制代码
$me1=new Me('Byron',24,array('Casper','Frank','Vincent'));
    $me2=new Me('Casper',25,array('Byron','Frank','Vincent'));
    $me3=new Me('Frank',26,array('Casper','Byron','Vincent'));
    //创建一个复杂的数组,子元素是自定义类,自定义类中包含数组字段
    $array_me=array($me1,$me2,$me3);

    $json=json_encode($array_me);//序列化对象数组为json字符串

    echo $json.'<br/>';

    $a=json_decode($json);//将json字符串反序列化为对象数组
    foreach ($a as $aa) {
        echo $aa->name.'<br/>';
    }
复制代码

 

image

 

可以看到序列化出来的字符串格式非常符合预期。

复杂对象xml格式序列化/反序列化

 

同样wddx_serialize_value和wddx_deserialize函数也能胜任复杂对象进行xml格式序列化/反序列化操作,使用刚才的对象做例子

复制代码
$me1=new Me('Byron',24,array('Casper','Frank','Vincent'));
    $me2=new Me('Casper',25,array('Byron','Frank','Vincent'));
    $me3=new Me('Frank',26,array('Casper','Byron','Vincent'));
    //创建一个复杂的数组,子元素是自定义类,自定义类中包含数组字段
    $array_me=array($me1,$me2,$me3);

    $xml=wddx_serialize_value($array_me);//序列化对象数组为xml字符串

    echo $xml.'<br/>';

    $a=wddx_deserialize($xml);//将xml字符串反序列化为对象数组
    foreach ($a as $aa) {
        echo $aa->name.'<br/>';
    }
复制代码

image

生成的xml字符串结构是这样的

image

 

最后

初学php,文章多有谬误,希望大家批评指正。


    本文转自魏琼东博客园博客,原文链接:http://www.cnblogs.com/dolphinX/p/3390684.html,如需转载请自行联系原作者

相关文章
|
5月前
|
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
66 1
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)
544 2
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
488 3
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
949 0
|
6月前
|
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
209 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
php中JSON或数组到formData的键值对转换
转换JSON或数组到formData格式的键值对并不复杂。PHP的 `json_decode()`与 `http_build_query()`是实现这一转换过程的关键函数。理解这个转换过程对于开发中处理各种AJAX请求时调整数据格式至关重要。这样,无论是处理来自客户端的JSON字符串,还是服务器端的数组数据,都能够灵活地转换为适合网络传输的格式,确保数据交换的顺畅和高效。
137 4
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
87 0
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
152 3
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等