php的serialize序列化和json性能测试

摘要:
最近,我们需要存储大型阵列。我们需要在序列化和json之间进行选择。在php5.2之前,序列化主要用于数组存储。Serialize有更详细的类型区分,而json只有四种类型,并用简单的符号表示。2) 速度比较在小数据的情况下,serialize比json快几个数量级。在大量数据的情况下,json比serialize稍差3)处理对象json无法处理对象方法等数据。

最近需要对大数组做存储,需要在serialize序列化和json之间做了选择。因此需要做了性能测试。

在php5.2之前对数组存储的时候,大都使用serialize系列化。php5.2之后,开始内置了 JSON 的支持

在网上看到有些资料说:json_encode和json_decode比内置的serialize和unserialize函数要高效。耳闻不如眼见,眼见不一定为实。那就用实际数据测试吧.....

我们先理解概念:

一、 序列化

序列化是将对象状态转换为可保持或可传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

将对象的状态信息转换为可以存储或传输的窗体的过程。 在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

通常,对象实例的所有字段都会被序列化,这意味着数据会被表示为实例的序列化数据。这样,能够解释该格式的代码有可能能够确定这些数据的值,而不依赖于该成员的可访问性。类似地,反序列化从序列化的表示形式中提取数据,并直接设置对象状态,这也与可访问性规则无关。 对于任何可能包含重要的安全性数据的对象,如果可能,应该使该对象不可序列化。如果它必须为可序列化的,请尝试生成特定字段来保存不可序列化的重要数据。如果无法实现这一点,则应注意该数据会被公开给任何拥有序列化权限的代码,并确保不让任何恶意代码获得该权限。


二、 JSON

JSON,JavaScript Object Notation,一种更轻、更友好的用于接口(AJAX、REST等)数据交换的格式。 JSON是结构化数据串行化的文本格式,作为XML的一种替代品,用于表示客户端与服务器间数据交换有效负载的格式。它是从ECMAScript语言标准衍生而来的。JSON的设计目标是使它成为小的、轻便的、文本的,而且是JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

JSON建构有两种结构:
1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。


2.值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

测试:

三、 实际测试

在PHP 5.3下执行:我们先使用小的数据做测试:

<?php  
$target = array (  
   'battle_id'=> 257  
   ,'user_id'=> 41248  
   ,'user_id2'=> 23989  
   ,'player'=> 41248  
   ,'formation'=> Array  
        (  
           '41248'=> 1  
           ,'23989'=> 2  
        )  
  
   ,'result'=> 1  
   ,'battle_type'=> 1  
   ,'speed'=> Array  
        (  
           '41248'=> 0  
           ,'23989'=> 0  
        )  
        );  
  
$json = json_encode($target);  
$seri = serialize($target);  
  
echo "json :" , strlen($json) ,'<br/>';  
echo "serialize :", strlen($seri) ,'<br/>';  
  
$stime = microtime(true);  
for ($i = 0; $i < 10000; $i ++) {  
    json_encode($target);  
}  
$etime = microtime(true);  
  
echo "json_encode :", ($etime - $stime) ,'<br/>';  
  
//----------------------------------  
  
$stime = microtime(true);  
for ($i = 0; $i < 10000; $i ++) {  
   json_decode($json,true);  
}  
$etime = microtime(true);  
  
echo "json_decode :", ($etime - $stime),'<br/>';  
  
//----------------------------------  
$stime = microtime(true);  
for ($i = 0; $i < 10000; $i ++) {  
    serialize($target);  
}  
$etime = microtime(true);  
  
echo "serialize :", ($etime - $stime) ,'<br/>';  
  
//----------------------------------  
$stime = microtime(true);  
for ($i = 0; $i < 10000; $i ++) {  
    unserialize($seri);  
}  
$etime = microtime(true);  
  
echo "unserialize :", ($etime - $stime),'<br/>';  
  
?>  


测试结果:

json :156
serialize :222
json_encode :0.1087498664856
json_decode :0.12652111053467
serialize :0.041656017303467
unserialize :0.040987968444824

测试结果看出json效率稍微比serialize差点,在php5.2可能会更差。应该是在php5.3之后,json扩展做了优化。

然后使用大数组做测试(代码放到最后,因为代码的数组比较长):

测试结果:

json :5350
serialize :8590
json_encode :0.90479207038879
json_decode :1.753741979599
serialize :1.3566699028015
unserialize :1.3003630638123

我们可以看出,serialize比json差了快一个数量级。

总结:

1) 空间的比较

serialize在编码后大概是json的1.5倍

原因:

  • serialize后字符串包含了子串的长度,这可能是速度方面的优化,但是测试结果不尽人意
  • serialize有更加详细的类型区分,而json只有四种类型,并且是以简单的符号表示。
  • 2)速度的比较
  • 在较小数据的情况下, serialize比json快数量级。

    在大数据量的情况下,json比serialize稍微差一点

    3)处理对象
    json无法处理对象方法等数据。

    4)使用范围

    • 序列化使用serialize,特别是对象的存储。这是其存在的意义。
    • 与对象无关的数据存储可以使用json,如包含大量数字的数组等。

      • 在前后端交互一般都使用JSON,另外,目前JSON只支持UTF-8编码的数据。


<?php

$target = array (
   'battle_id'=> 257
   ,'user_id'=> 41248
   ,'user_id2'=> 23989
   ,'player'=> 41248
   ,'formation'=> Array ('41248'=> 1  ,'23989'=> 2)
   ,'result'=> 1
   ,'battle_type'=> 1
   ,'speed'=> Array( '41248'=> 0,'23989'=> 0  )
   ,'attacker'=> Array(
   	'1'=> Array (
                   'user_id'=> 41248
                   ,'soldier_id'=> 28
                   ,'prototype_id'=> 4
                   ,'bid'=> 1
                   ,'level'=> 1
                   ,'rare'=> 1
                   ,'skill_id'=> 1
                   ,'totalhp'=> 3997
                   ,'hp'=> 3997
                   ,'attack_general'=> 346
                   ,'attack_skill'=> 596
                   ,'attack_explode'=> 458
                   ,'attack_type'=> 1
                   ,'defense'=> 0
                   ,'anger'=> 50
                   ,'dodge'=> 2
                   ,'crit'=> 2
                   ,'block'=> 2
                   ,'block_effect'=> 0.5
                   ,'crit_effect'=> 2
                   ,'foramtion_effect'=> 0)
           ,'4'=> Array (
                   'user_id'=> 41248
                   ,'soldier_id'=> 29
                   ,'prototype_id'=> 2
                   ,'bid'=> 1
                   ,'level'=> 1
                   ,'rare'=> 1
                   ,'skill_id'=> 1
                   ,'totalhp'=> 3555
                   ,'hp'=> 3555
                   ,'attack_general'=> 396
                   ,'attack_skill'=> 581
                   ,'attack_explode'=> 418
                   ,'attack_type'=> 1
                   ,'defense'=> 0
                   ,'anger'=> 50
                   ,'dodge'=> 2
                   ,'crit'=> 2
                   ,'block'=> 0
                   ,'block_effect'=> 0.5
                   ,'crit_effect'=> 2
                   ,'foramtion_effect'=> 0
                )
           ,'5'=> Array                (
                   'user_id'=> 41248
                   ,'soldier_id'=> 30
                   ,'prototype_id'=> 6
                   ,'bid'=> 1
                   ,'level'=> 1
                   ,'rare'=> 1
                   ,'skill_id'=> 1
                   ,'totalhp'=> 3043
                   ,'hp'=> 3043
                   ,'attack_general'=> 351
                   ,'attack_skill'=> 540
                   ,'attack_explode'=> 474
                   ,'attack_type'=> 1
                   ,'defense'=> 0
                   ,'anger'=> 50
                   ,'dodge'=> 2
                   ,'crit'=> 2
                   ,'block'=> 0
                   ,'block_effect'=> 0.5
                   ,'crit_effect'=> 2
                   ,'foramtion_effect'=> 0)
           ,'7'=> Array (
                   'user_id'=> 41248
                   ,'soldier_id'=> 37
                   ,'prototype_id'=> 2
                   ,'bid'=> 1
                   ,'level'=> 1
                   ,'rare'=> 1
                   ,'skill_id'=> 1
                   ,'totalhp'=> 3491
                   ,'hp'=> 3491
                   ,'attack_general'=> 393
                   ,'attack_skill'=> 532
                   ,'attack_explode'=> 456
                   ,'attack_type'=> 1
                   ,'defense'=> 0
                   ,'anger'=> 50
                   ,'dodge'=> 2
                   ,'crit'=> 2
                   ,'block'=> 0
                   ,'block_effect'=> 0.5
                   ,'crit_effect'=> 2
                   ,'foramtion_effect'=> 0   ))
   ,'defender'=> Array(
           '2'=> Array(
                   'user_id'=> 23989
                   ,'soldier_id'=> 24
                   ,'prototype_id'=> 1
                   ,'bid'=> 1
                   ,'level'=> 1
                   ,'rare'=> 1
                   ,'skill_id'=> 1
                   ,'totalhp'=> 3230
                   ,'hp'=> 3230
                   ,'attack_general'=> 390
                   ,'attack_skill'=> 567
                   ,'attack_explode'=> 442
                   ,'attack_type'=> 1
                   ,'defense'=> 0
                   ,'anger'=> 50
                   ,'dodge'=> 2
                   ,'crit'=> 2
                   ,'block'=> 0
                   ,'block_effect'=> 0.5
                   ,'crit_effect'=> 2
                   ,'foramtion_effect'=> 0)
           ,'5'=> Array(
                   'user_id'=> 23989
                   ,'soldier_id'=> 25
                   ,'prototype_id'=> 2
                   ,'bid'=> 1
                   ,'level'=> 1
                   ,'rare'=> 1
                   ,'skill_id'=> 1
                   ,'totalhp'=> 3400
                   ,'hp'=> 3400
                   ,'attack_general'=> 379
                   ,'attack_skill'=> 536
                   ,'attack_explode'=> 405
                   ,'attack_type'=> 1
                   ,'defense'=> 0
                   ,'anger'=> 50
                   ,'dodge'=> 2
                   ,'crit'=> 2
                   ,'block'=> 0
                   ,'block_effect'=> 0.5
                   ,'crit_effect'=> 2
                   ,'foramtion_effect'=> 0 )
           ,'7'=> Array(
                   'user_id'=> 23989
                   ,'soldier_id'=> 26
                   ,'prototype_id'=> 6
                   ,'bid'=> 1
                   ,'level'=> 1
                   ,'rare'=> 1
                   ,'skill_id'=> 1
                   ,'totalhp'=> 3669
                   ,'hp'=> 3669
                   ,'attack_general'=> 362
                   ,'attack_skill'=> 549
                   ,'attack_explode'=> 426
                   ,'attack_type'=> 1
                   ,'defense'=> 0
                   ,'anger'=> 50
                   ,'dodge'=> 2
                   ,'crit'=> 2
                   ,'block'=> 0
                   ,'block_effect'=> 0.5
                   ,'crit_effect'=> 2
                   ,'foramtion_effect'=> 0 )
           ,'9'=> Array(
                   'user_id'=> 23989
                   ,'soldier_id'=> 27
                   ,'prototype_id'=> 1
                   ,'bid'=> 1
                   ,'level'=> 1
                   ,'rare'=> 1
                   ,'skill_id'=> 1
                   ,'totalhp'=> 3618
                   ,'hp'=> 3618
                   ,'attack_general'=> 326
                   ,'attack_skill'=> 510
                   ,'attack_explode'=> 419
                   ,'attack_type'=> 1
                   ,'defense'=> 0
                   ,'anger'=> 50
                   ,'dodge'=> 2
                   ,'crit'=> 2
                   ,'block'=> 0
                   ,'block_effect'=> 0.5
                   ,'crit_effect'=> 2
                   ,'foramtion_effect'=> 0) )
   ,'battle_process'=> Array(
           '0'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )

           ,'1'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )

           ,'2'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )
           ,'3'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )

           ,'4'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )
           ,'5'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )

           ,'6'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )

           ,'7'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )
           ,'8'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )

           ,'9'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )
           ,'10'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )
           ,'11'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )

           ,'12'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )
           ,'13'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )
           ,'14'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )

           ,'15'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )
           ,'16'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )
           ,'17'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )

           ,'18'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )
           ,'19'=> Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )

           ,'20'=>Array(
                   'user_id'=> 41248
                   ,'asid'=> 28
                   ,'bsid'=> Array( '0'=> 26 )
                   ,'harm'=> Array('0'=> 1650)
                   ,'dhp'=> Array('0'=> 2019  )
                   ,'attacker_anger'=> 66
                   ,'defender_anger'=> Array('0'=> 94 )
                   ,'skill'=> 0
                   ,'state'=> 0
                )
        )

);

 
$json = json_encode($target);
$seri = serialize($target);

echo "json :" , strlen($json) ,'<br/>';
echo "serialize :", strlen($seri) ,'<br/>';

$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++) {
    json_encode($target);
}
$etime = microtime(true);

echo "json_encode :", ($etime - $stime) ,'<br/>';

//----------------------------------

$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++) {
   json_decode($json,true);
}
$etime = microtime(true);

echo "json_decode :", ($etime - $stime),'<br/>';

//----------------------------------
$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++) {
    serialize($target);
}
$etime = microtime(true);

echo "serialize :", ($etime - $stime) ,'<br/>';

//----------------------------------
$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++) {
    unserialize($seri);
}
$etime = microtime(true);

echo "unserialize :", ($etime - $stime),'<br/>';

?>

免责声明:文章转载自《php的serialize序列化和json性能测试》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HDFS集群中大数据运维常用的命令总结win10与子系统WSL互访文件系统下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity3D客户端和Java服务端使用Protobuf

原文:http://blog.csdn.net/kakashi8841/article/details/17334493 前几天有位网友问我关于Unity3D里面使用Protobuf的方法,一时有事拖到现在才写这篇文章,不好意思哈。 本文测试环境: 系统:WINDOWS 7(第3、6步)、OS X 10.9(第4步) 软件:VS 2012(第3、6步)、E...

入门系列-缓存机制介绍与使用

ABP框架扩展了ASP.NET Core的分布式缓存系统. Volo.Abp.Caching Package 默认情况下启动模板已经安装了这个包,所以大部分情况下你不需要手动安装. Volo.Abp.Caching是缓存系统的核心包.使用包管理控制台(PMC)安装到项目: Install-Package Volo.Abp.Caching 然后将AbpCa...

解决ASP.NET MVC返回的JsonResult 中 日期类型数据格式问题,和返回的属性名称转为“驼峰命名法”和循环引用问题

DateTime类型数据格式问题 问题 在使用ASP.NET MVC 在写项目的时候发现,返回给前端的JSON数据,日期类型是 Date(121454578784541) 的格式,需要前端来转换一下才能用来使用。 C#对象属性名称转换成JSON自动转成“驼峰命名法” 问题 在C#中推荐的属性命名方式是“帕斯卡命名法”【首字母大写】但是在前端推荐命名方式为“...

Hadoop 序列化

摘自:http://blog.csdn.net/zhang0558/article/details/53444533 序列化和反序列化以及hadoop数据类型 1.什么是序列化和反序列化   序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储(持久化)和网络传输。   反序列化就是将收到 字节序列(或其他数据传输协议)或者是硬盘的持久...

从数据库里面取值绑定到Ztree

1、效果图(思路:将数据库表按照一定的格式排序,然后序列化成json字符串,绑定到Ztree上并显示出来) zTree v3.5.16 API 文档 :http://www.ztree.me/v3/api.php 2、添加应用及显示的位置,设置树需要绑定的字段,与数据库里面的表字段有关(备注:设置树为展开状态) <script src="/comm...

十大接口

十大接口 一、Response响应封装 1.1封装 from rest_framework.response import Response class APIResponse(Response): def __init__(self, status=0, msg="ok", results=None, http_status=None, head...