python有没有类似pythonhp的serialize的函数

对于JSON(JavaScript Object Notation)大家应该不陌生,它是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于, 的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
JSON建构于两种结构:
“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
PHP的serialize是将变量序列化,返回一个具有变量类型和结构的字符串表达式,说起来两者都是以一种字符串的方式来体现一种数据结构,那它们之间有什么区别呢。先从JSON说起,看一个简单的实例。例一:
var&test&=&{"Name":"Peter","Age":<span style="color: #};document.write(test.Name&+&":&"&+&test.Age);
Peter:&<span style="color: #
变量test中{"Name":"Peter","Age":20}为一个有2个元素的对象(感觉就像PHP的数组):Name为Peter,Age为20。当然也可以变得复杂些。例二:
var&test&=&{"User":{"Name":"Peter","Age":<span style="color: #},"Company":"FORD"};document.write(test.User.Name&+&":&"&+&pany);
Peter:&FORD
这个例子中User元素中包含了Name和Age。如果要体现多个User,则需要使用数组,区别于对象的"{}",数组使用"[]"。例三:
var&test&=&[&&&&&&&&&&&&&&&&&{"User":{"Name":"Peter","Age":<span style="color: #},"Company":"FORD"},&&&&&&&&&&&&&&&&&{"User":{"Name":"Li&Ming","Age":<span style="color: #},"Company":"Benz"}&&&&&&&&&&&&&&];document.write(test[<span style="color: #].User.Name&+&":&"&+&test[<span style="color: #].Company);//或者使用:document.write(test[1]["User"]["Name"]&+&":&"&+&test[1]["Company"]);
Li&Ming:&Benz
通过以上简单实例就能将一些复杂数据通过一个字符串来进行传递,再配合上Ajax的确是方便很多。下面再来看看PHP的serialize函数的作用。例四:
$arr&=&array&&&&&&&(&&&&&&&&&&'Peter'=&&array&&&&&&&&&&(&&&&&&&&&&&&'Country'=&'USA',&&&&&&&&&&&&'Age'=&<span style="color: #&&&&&&&&&&),&&&&&&&&&&'Li&Ming'=&&array&&&&&&&&&&(&&&&&&&&&&&&&'Country'=&'CHINA',&&&&&&&&&&&&&'Age'=&<span style="color: #&&&&&&&&&&)&&&&&&&&);$serialize_var&=&serialize($arr);echo&$serialize_var;
a:<span style="color: #:{s:<span style="color: #:"Peter";a:<span style="color: #:{s:<span style="color: #:"Country";s:<span style="color: #:"USA";s:<span style="color: #:"Age";i:<span style="color: #;}s:<span style="color: #:"Li&Ming";a:<span style="color: #:{s:<span style="color: #:"Country";s:<span style="color: #:"CHINA";s:<span style="color: #:"Age";i:<span style="color: #;}}
这个结果看上去比JSON要复杂一些,其实也很简单,它说明的就是一些数据类型和结构。以a:2:{s:7:"Country";s:3:"USA";s:3:"Age";i:20;}为例:&&&&&&a:2说明这是个有两个元素的数组(array),&&&&&&s:7:"Country";s:3:"USA";为第一个元素,s:7说明这是有7个字符的字符串(string),&&&&&&后面i:20;也应该猜得到是整数(integer)20。再来看一下这个例子,例五:
class&test{&&&&var&$var&=&<span style="color: #;&&&&function&add(){&&&&&&echo&$var+<span style="color: #;&&&&}}$unserialize_var&=&new&$serialize_var&=&serialize($unserialize_var);echo&$serialize_var;$unserialize_var&=&null;$unserialize_var&=&unserialize($serialize_var);$unserialize_var-&add();
O:<span style="color: #:"test":<span style="color: #:{s:<span style="color: #:"var";i:<span style="color: #;}<span style="color: #
从这个例子中可以看出来,serialize对数据的类型和结构都进行的保存,unserialize后的变量仍然可以使用add()方法。那么PHP和JSON有没有联系呢,熟悉PHP的朋友应该了解PHP5.2.0已经将JSON extension设置为默认组件,也就是说我们可以在PHP中进行JSON操作,其函数为json_encode和json_decode。例六:
$arr&=&array&&&&&&&(&&&&&&&&&&'Name'=&'Peter',&&&&&&&&&&'Age'=&<span style="color: #&&&&&&&);$jsonencode&=&json_encode($arr);echo&$jsonencode;
{"Name":"Peter","Age":<span style="color: #}
这个结果和例一中test值是一样的,通过json_encode将PHP中的变量转换为JSON字符出表达式。再来看看json_decode的用法。例七:
$var&=&'{"Name":"Peter","Age":20}';$jsondecode&=&json_decode($var);print_r($jsondecode);
stdClass&Object&(&[Name]&=&&Peter&[Age]&=&&<span style="color: #&)
这的确验证了,在JSON中{"Name":"Peter","Age":20}是一个对象,但是在PHP中也可以将其转为数组,在json_decode中将ASSOC参数设置为True即可。例八:
$var&=&'{"Name":"Peter","Age":20}';$jsondecode&=&json_decode($var,true);print_r($jsondecode);
Array&(&[Name]&=&&Peter&[Age]&=&&<span style="color: #&)
另,需要注意的是JSON是基于Unicode格式,所以要进行中文操作要将其转化为UTF-8格式。通过上面这些例子相信大家对于JSON和PHP的serialize、json_encode都有了初步了解,结合PHP、Javascript、JSON以及Ajax就可以完成强大的数据交互功能。相关参考资料:PHP JSON Functions: JSON Introduction:网友实例: &&&&&&&&&&&&&
阅读(...) 评论()
Copyright & 2010 Gniepython中如何把 带回车符的多行文本赋值给某个变量呢?就是类似PHP中的&&&EOF ****EOF操作_百度知道php 有没有类似 python 的 sentry 日志收集系统_百度知道python中有没有 类似php中的intval 函数_百度知道在日常开发当中,不同平台之间相互通信是比较常见的,比如.net和php相互通信。你可能在使用Webservice,也可能仅仅需要处理对方传递过来的一些数据。如果使用的是一些标准数据格式像XML,Json,那处理起来就比较容易了,因为各方都有类似的实现。但是这种数据格式比较非主流那该怎么办那?
例如你需要在.net平台处理PHP函数serialize()序列化后的字符串。又或者你想要用PHP函数 unserialize() 反序列化C#序列化的对象。那么,这个时候,Sharp Serialization Library 可以帮助你。
囧,废话好多啊,下面正文开始。
Sharp Serialization Library 介绍
Sharp Serialization Library serializes and deserializes primitives, ArrayLists and Hashtables, compatible with PHP serialize(). Use it for SOAP/Web Services communications where Hashtables cannot be passed otherwise, or saving to a file readable by php.
Sharp Serialization Library 功能
反序列化PHP函数 serialize()序列化后的字符串。
把对象序列化为PHP函数 unserialize() 可用的字符串。
Sharp Serialization Library 实例
//来自 原文
//C#反序列化多维数组的例子
//Str是PHP函数 serialize()序列化后的字符串
//像这样a:5:{i:0;a:8:{i:0;s:1:"0";s:1:"u";s:1:"0";i:1;s:1:...
ArrayList al = (ArrayList)serializer.Deserialize(Str);
for (int i = 0; i & al.C i++)
Hashtable ht = (Hashtable)al[i];
//do something
//C#反序列化单维数组的例子
ArrayList al = (ArrayList)serializer.Deserialize(Str);
for (int i = 0; i & al.C i++)
Hashtable ht = (Hashtable)al[i];
//do something
//C#把对象序列化为PHP unserialize()可用字符串
Hashtable ht = new Hashtable();
//single string
ht[this.ssKeyTextBox.Text] = this.ssValueTextBox.T
ArrayList al = new ArrayList(3);
al.Add(this.alValue1TextBox.Text);
al.Add(this.alValue2TextBox.Text);
al.Add(this.alValue3TextBox.Text);
//ArrayList
ht[this.alKeyTextBox.Text] =
int i = Int32.Parse(this.intValueTextBox.Text);
ht[this.intKeyTextBox.Text] =//int
//Serialize the Hashtable
string stSerializedText = this.serializer.Serialize(ht);
this.serializeTextBox.Text = stSerializedT
Sharp Serialization Library 下载
项目官方地址
另附赠C#获取 Unix时间戳
//要注意转换为本地时区
DateTime dtstart = new DateTime();
dtstart =TimeZone.CurrentTimeZone.ToLocalTime(dtstart);
TimeSpan syncDate = syncDate.Subtract(dtstart);
string unixDate = syncDate.Ticks.ToString();
unixDate = unixDate .Substring(0, unixDate.Length - 7);
此文同时发布在:
原文地址:
阅读(...) 评论()

我要回帖

更多关于 序列化函数serialize 的文章

 

随机推荐