我正在使用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时没有问题
似乎不是这个字段,我删除了原始序列化的字段,但仍然得到相同的错误。每个对象都在一行中序列化,每个对象用PHP_EOL
分隔这是数据people.json
{"name":"dexter","date":"13/04/2009", "doc": "1047516320" }
{"name":"deedee","date":"30/05/2013", "doc": "1047516325" }
所有字段均有效且数据类型为数字或字符串
答案 0 :(得分:4)
反序列化失败时会发生此错误。确保使用正确类型的数据传递正确的json。同时检查同样被反序列化的子对象是否也正确 - 传递的json也必须正确。
同时确保正确编写课程而不使用正斜杠:
@Type("Acme\DemoBundle\Entity\City")
还要确保这实际上是类,但不是接口(您可能需要编写接口解析器来实现它)
答案 1 :(得分:0)
解析器在people.json中阻塞了无效的JSON。需要逃避正斜杠或固相线。请参阅http://json.org/中的JSON文档,并阅读有关字符串的部分。
您的源JSON应如下所示:
{"name":"dexter","date":"13\/04\/2009", "doc": "1047516320" }
如果您无法控制源JSON,那么您必须编写自己的Handler实现SubscribingHandlerInterface并将其注册到序列化程序。