JMSSerializer 预期输入结束,但得到 T_NONE 类型的“/”

rkm*_*max 4 php serialization deserialization jmsserializerbundle

我正在使用 JMS 来序列化和反序列化我的实体我有一个批处理来生成一个 json 文件和其他读取该文件

我的实体有一个 DateTime 字段,如下所示

/**
 * @var \DateTime
 *
 * @ORM\Column(name="inscription_date", type="datetime", nullable=false)
 * @JMS\Type("DateTime<'d/m/Y'>")
 */
private $inscriptionDate;
Run Code Online (Sandbox Code Playgroud)

当实体被序列化时,结果是

"inscription_date":"30\/05\/2007"
Run Code Online (Sandbox Code Playgroud)

但问题是当我要反序列化我得到

[JMS\Parser\SyntaxErrorException]                                            
Expected end of input, but got "/" of type T_NONE at position 11 (0-based).
Run Code Online (Sandbox Code Playgroud)

注意:当我使用json_decode内置函数返回一个 stdClass 时没有问题


更新 1

似乎不是这个字段,我删除了原始序列化的字段,但仍然出现相同的错误。每个对象都在一行中序列化,每个对象由 PHP_EOL 分隔

这是数据的样本 people.json

{"name":"dexter","date":"13/04/2009", "doc": "1047516320" }
{"name":"deedee","date":"30/05/2013", "doc": "1047516325" }
Run Code Online (Sandbox Code Playgroud)

所有字段均有效且数据类型为数字或字符串

ple*_*ock 5

反序列化失败时会发生此错误。确保使用正确类型的数据传递正确的 json。还要检查您也将被反序列化的子对象是否也正确 - 传递的 json 也必须正确。

还要确保在没有正斜杠的情况下正确编写您的类:

@Type("Acme\DemoBundle\Entity\City")
Run Code Online (Sandbox Code Playgroud)

还要确保这实际上是类,而不是接口(您可能需要编写接口解析器来实现它)