如何通过ApiPlatform保存json属性?

<?php


/** 

 * @ApiResource(

 *     normalizationContext={"groups"={"fields_group:read"}},

 *     denormalizationContext={"groups"={"fields_group:write"}}

 * )

 */

class Entity 

{

    /**

     * @var array Settings.

     *

     * @ORM\Column(type="json", options={"comment":"Settings"})

     *

     * @Assert\NotBlank()

     * @Assert\Json()

     *

     * @Groups({"fields_group:read", "fields_group:write"})

     * @ApiProperty(

     *     attributes={

     *         "openapi_context"={

     *             "type"="object",

     *             "example"={"option":"value"}

     *         }

     *     }

     * )

     */

    private array $settings;


    /**

     * @return array

     */

    public function getSettings(): array

    {

        return $this->settings;

    }




    /**

     * @param array $settings

     *

     * @return self

     */

    public function setSettings(array $settings): self

    {

        $this->settings = $settings;


        return $this;

    }

}

要求


curl -X POST "https://localhost/api/entities" \

    -H  "accept: application/ld+json" \

    -H  "Content-Type: application/ld+json" \

    -d "{\"settings\":{\"option\":\"value\"}}"

回复


{

  "status": 400,

  "message": "Expected argument of type \"string\", \"array\" given"

}

如何通过 ApiPlatform 保存 json 属性?


陪伴而非守候
浏览 55回答 1
1回答

森林海

Json验证器有罪https://github.com/symfony/validator/blob/v5.1.3/Constraints/JsonValidator.php#L37这是多余的 ApiPlatform 将通过注释检查类型&nbsp;@var array Settings
打开App,查看更多内容
随时随地看视频慕课网APP