我使用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的处理程序,并将其注册到序列化程序中。