【问题标题】:Deserialize array of object using jms/serializer使用 jms/serializer 反序列化对象数组
【发布时间】:2017-06-11 08:53:12
【问题描述】:

我想反序列化这样的东西:

[
    { "id": 42 },
    { "id": 43 }
]

知道怎么做吗?

【问题讨论】:

  • 您可以从文档开始:jmsyst.com/libs/serializer/master/usage
  • 我阅读了所有文档,但没有找到任何这个...我找到的唯一解决方案是创建一个其他类做这样的事情:@Type("array<Class>") 但它不起作用,因为数组应该有一个工作键
  • 所以如果它不属于一个实体,它只是 json - 那么使用 php 的 json_decode 有什么问题?
  • 使用 jms/serializer 的目的是将 json 字符串转换成你的对象,而不是像使用 json_decode 时那样的 stdClass
  • $serializer->deserialize($json, 'array<T>', 'json'); ?其中T 是具有id 属性的类型。

标签: symfony jmsserializerbundle jms-serializer


【解决方案1】:

应该是

$serializer->deserialize($json, 'array<T>', 'json')

其中T 是具有id 属性的类的名称。

【讨论】:

  • 有没有办法在数组中保留键(例如:[123=&gt; { "id": 42 }, 234=&gt;{ "id": 42 }])?这对我有用,但键被重置(从 0 开始)
  • 想通了:$this-&gt;serializer-&gt;deserialize($result, 'array&lt;integer,MyModelDefinedInYML&gt;&gt;', 'json')
猜你喜欢
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
  • 2018-04-26
  • 1970-01-01
相关资源
最近更新 更多