【问题标题】:Serializing and deserializing scalar/primitive types with symfony使用 symfony 序列化和反序列化标量/原始类型
【发布时间】:2019-09-28 00:34:56
【问题描述】:

我已经成功地使用 Symfony 序列化器将对象序列化为 XML。但是对于下面显示的 xml,我无法将 xml 序列化和反序列化为简单类型。

我用 XmlEncoder 和 Normalizer 尝试了几件事,但似乎没有任何效果。

例如,xml <response>Hello there</response> 需要反序列化为包含“Hello there”的字符串变量。

类似地,如下所示的 xml 数组反序列化为 ['Hello World', 'Hello', 'Hi']。

<responses>
    <response>Hello World</response>
    <response>Hello </response>
    <response>Hi</response>
</responses>

这甚至可以通过 Symfony Serializer 实现,还是我必须编写一些自定义代码来处理这个?

【问题讨论】:

  • 你试过...$serializer-&gt;deserialize($data, '[]', 'xml')
  • 如果没有帮助,请尝试使用带有$serializer-&gt;decode($data, 'xml') 的序列化程序,但两种情况下的格式可能略有不同。
  • @Jakumi 第一个解决方案给出“无法对 [] 类型的对象进行非规范化,找不到支持的规范化器。”第二个解决方案似乎正在完成这项工作,谢谢!很惊讶它不在symfony.com/doc/current/components/serializer.html的文档中
  • 可能,因为它有点不寻常;o)

标签: php xml symfony xmlserializer


【解决方案1】:

序列化程序还允许解码数据,这很可能会返回一个数组,该数组可能具有适合您的用例的可用结构。

$serializer->decode($data, 'xml')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多