使用symfony/serializer
版本 4。我从一个看起来像这样的 API 取回 JSON 的数据
{
"name": "Steves Book Shop",
"book_1": "Lord of the Rings",
"book_2": "The Hobbit",
"book_[n]": "there can be any number of books"
}
我想反序列化成以下模型
class BookShop
{
protected $name;
/** @var Book[] */
protected $books;
public function getBooks(): array
{
return $this->books;
}
public function setBooks(array $books)
{
$this->books = $books;
}
public function addBook(Book $book)
{
$this->books[] = $book;
}
// ... other code removed to save space
}
class Book
{
protected $title;
// ... other code removed to save space
}
当在下面使用“更干净”的 JSON 时,一切都按预期工作,我得到了一个BookShop
with 和Book
s 返回的数组。
{
"name": "Steves Book Shop",
"books": [
{ "title": "Lord of the Rings" },
{ "title": "The Hobbit" }
]
}
什么是对原始 JSON 进行非规范化的干净方法,而原始 JSON 却令人讨厌book_1
,book_2
.
我一直在尝试自定义反规范化器 ( DenormalizerInterface
),我的解决方案看起来比您预期的要困难得多。