【问题标题】:Deserialize nested JSON into entity using Symfony使用 Symfony 将嵌套的 JSON 反序列化为实体
【发布时间】:2018-09-19 12:56:57
【问题描述】:

如何使用 Symfony 将 photos 集合反序列化为 Photo 实体?

这是我的 json:

{
    "id": 3,
    "status": 1,
    "title": "sometitle",
    "agency": {
        "id": 1,
        "name": "AgencyName",
        ...
        "created_at": "-0001-11-30T00:00:00+01:00",
        "updated_at": "-0001-11-30T00:00:00+01:00"
    },
    "price": "123123",
    ...
    "created_at": "-0001-11-30T00:00:00+01:00",
    "updated_at": "-0001-11-30T00:00:00+01:00",
    "photos": [
        {
            "id": 1,
            "path": "img1.jpg",
            "created_at": "2018-04-05T15:29:47+02:00",
            "updated_at": "2018-04-05T15:29:47+02:00"
        },
        {
            "id": 2,
            "path": "img2.jpg",
            "created_at": "2018-04-05T15:35:28+02:00",
            "updated_at": "2018-04-05T15:35:28+02:00"
        }
    ]
}

我如何在Photo 实体中指定它应该将集合用作多个对象?

这不起作用:

\Entity\Photo.php
/**
 * @ORM\ManyToOne(targetEntity="House", inversedBy="photos")
 */
private $house;

\Entity\House.php
/**
 * @ORM\OneToMany(targetEntity="Photo", mappedBy="house")
 */
private $photos;

当我在我看来:

{% for photo in house.photos %}
    <li>{{ photo.path }}</li>
{% endfor %}

它正在抛出一个异常,并试图将另一个 GET 请求发送到 API 中的不同路由,而不是仅使用嵌套集合

【问题讨论】:

  • $stuff = json_decode($json, true); // true,保留 assoc. $stuff['photos'][0]['path'] 将是第一张照片的路径,所以你会做类似... for photo in $stuff['photos'] 我猜你是不是 json_decoded 这个。我对 Symphony 不是很好,所以我只知道如何处理核心 PHP...Json 解码然后访问你想要的值,就像一个 assoc 数组:)
  • @MathieuDormeval 不确定是不是。我想构建一个不需要连接到 mysql 并且只使用 API 请求来管理数据的 Web 应用程序。所以我选择了 DoctrineRestDriver。我可能不得不换成别的东西。你能推荐什么吗?

标签: php json symfony json-deserialization


【解决方案1】:

您可以使用 Symfony 序列化器组件:https://symfony.com/doc/3.4/components/serializer.html

示例:

$house = $serializer->deserialize($json, House::class, 'json');

【讨论】:

    猜你喜欢
    • 2021-09-27
    • 2019-07-07
    • 2014-05-27
    • 2021-09-21
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多