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


JMSSerializer Expected end of input, but got "/" of type T_NONE

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

我的实体有一个字段DateTime,类似于下面的

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

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

"inscription_date":"30'/05'/2007"

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

[JMS'Parser'SyntaxErrorException]                                            
Expected end of input, but got "/" of type T_NONE at position 11 (0-based).

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


更新1

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

这是数据people.json 的样本

{"name":"dexter","date":"13/04/2009", "doc": "1047516320" }
{"name":"deedee","date":"30/05/2013", "doc": "1047516325" }

所有字段都是有效的,数据类型是数字或字符串

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

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

@Type("Acme'DemoBundle'Entity'City")

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

解析器被people.JSON中的无效JSON阻塞。需要转义正斜杠或solidus。请参阅此处的JSON文档http://json.org/并阅读关于字符串的部分。

您的源JSON应该如下所示:

{"name":"dexter","date":"13'/04'/2009", "doc": "1047516320" }

如果您无法控制源JSON,那么您必须编写自己的实现SubscriptingHandlerInterface的处理程序,并将其注册到序列化程序中。

相关文章: