当前位置: 首页 > 面试题库 >

序列化PHP字符串的结构

贡光明
2023-03-14
问题内容

我想知道是否有人可以指出我的资源,其中记录了序列化php字符串的详细信息。我基本上想知道格式/结构,因此我可以在VB.NET中编写一个函数以对其进行序列化/反序列化。

谢谢!


问题答案:

基本结构如下:

标量类型:

  1. 布尔值序列化为:
    b:<i>;
    

其中<i>是一个整数值,其值为0(false)或1(true)。

  1. 整数序列化为:
    i:<i>;
    

其中<i>是整数值。

  1. 浮点数被序列化为(d含义为double):
    d:<f>;
    

<f>浮点值在哪里。

  1. 字符串被序列化为:
    s:<i>:"<s>";
    

其中,<i>是表示的字符串长度的整数<s>,并且<s>是字符串值。

特殊类型:

  1. null 简单地序列化为:
    N;
    

复合类型:

  1. 数组序列化为:
    a:<i>:{<elements>}
    

其中,<i>是表示数组中元素数量的整数,以及<elements>零个或多个序列化键值对:

    <key><value>

其中,<key>代表序列化的标量类型,以及<value>任何可序列化的值。

  1. 对象被序列化为:
    O:<i>:"<s>":<i>:{<properties>}
    

其中第一个<i>是代表的字符串长度的整数<s>,并且<s>是完全限定的类名(类名前面带有完整的命名空间)。第二个<i>是代表对象属性数量的整数。<properties>是零个或多个序列化名称值对:

    <name><value>

其中<name>是表示属性名称的序列化字符串,以及<value>可序列化的任何值。

有一个陷阱<name>

<name> 表示为

    s:<i>:"<s>";

其中<i>是表示字符串长度的整数<s>。但是,<s>每个属性的可见性值不同:

一个。具有 公共 属性<s>是属性的简单名称。

b。但是,对于 受保护的
属性,<s>该属性是该属性的简单名称,前面带有\0*\0一个星号,并用两个NUL字符(即chr(0))括起来。

C。带有 私有 属性的<s>是属性的简单名称,以\0<s>\0-
开头,并用<s>两个NUL字符括起来,其中的<s>是完全限定的类名。

还有一些其他情况,例如R:<i>;,代表参考,在这里我没有提到(因为老实说我还没有弄清楚它的确切工作原理),但是这应该给您关于PHP的序列化机制的一个不错的主意。



 类似资料:
  • 我想知道是否有人能给我指出一个资源,其中记录了序列化php字符串的详细信息。我基本上想知道格式/结构,这样我就可以在VB.NET中编写一个函数来序列化/反序列化它。 谢了!

  • 我有课 其中field 如果使用ObjectMapper反序列化此对象 结果是这样的: 添加了转义(\),并且json字段有引号(")。如何正确摆脱这一点并制作单个JSON?像这样:

  • 字符串序列化是将对象状态写入字节流的过程。 在python中,“pickle”库用于启用序列化。 该模块包含一个强大的算法,用于序列化和反序列化Python对象结构。 “Pickling”是将Python对象层次结构转换为字节流的过程,“unpickling”是相反的过程。 泡菜模块的演示如下 - import pickle #Here's an example dict grades = { '

  • 问题内容: 我有以下类,它是由Jackson映射的(简化版): 在某些情况下,服务器会返回,然后我想将name设置为空的Java String。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串? 问题答案: 您可以在默认构造函数中或声明时进行设置: 要么

  • 我有以下由Jackson映射的类(简化版): 在某些情况下,服务器返回,然后我想将name设置为空Java字符串。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串吗?

  • 有没有一种方法可以正确地反序列化以双引号开头和结尾的JSON字符串? 数据以流的形式输入(来自AWS S3对象)。这是流的内容(注意开头和结尾的双引号字符): JsonSerializer似乎没有正确地反序列化它。但是,对于以下内容,其工作原理与预期一致: 以下是片段: