question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[2.4.0-beta2] Wrong JSON-LD and JSON single item response - ignores serialization groups?

See original GitHub issue

On 2.4.0-beta1 when I ask for single resource (/api/contents/1.jsonld) I get:

{
   "@context":"/api/contexts/Content",
   "@id":"/api/contents/1",
   "@type":"Content",
   "id":1,
   "contentType":"homepage",
   "modifiedAt":"2018-06-19T16:18:20+00:00",
   "publishedAt":"2019-01-06T19:14:53+00:00",
   "fieldValues":{
      "title":"Labore reprehenderit dolorem repellendus asperiores.",
      "image":{
         "filename":"kitten.jpg",
         "alt":"A cute kitten",
         "path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
      },
      "teaser":"Ut qui dolor debitis esse. Maiores alias repellat maxime ut voluptatem. Eum esse reprehenderit expedita necessitatibus. Animi hic eveniet sed et.\n\nEst pariatur incidunt aut iste. Rem aut nihil et ut natus perspiciatis. Dolore veritatis ab sed repellendus quo deleniti qui.\n\nQui laudantium corrupti labore quidem veniam nemo qui. Sit dolore atque et cumque libero. Omnis earum repellendus hic aut vero aut voluptatem. Ea non magni eligendi occaecati numquam.",
      "content":"Minus sed repellendus corporis nemo. Aut aut veniam at aut aliquid. Architecto tempora quia neque numquam voluptas sint est delectus.\n\nUnde voluptatem animi non ut aut dicta. Omnis vero dolorum aliquid laudantium magni asperiores. Et tempora eveniet soluta modi occaecati.\n\nEa dolorum tenetur voluptatum temporibus illo fuga. Quibusdam et doloribus debitis omnis sed. Tempora in aperiam ullam non odit. Praesentium sunt accusantium dolorem commodi labore eum nostrum quia.",
      "contentlink":"Aut ea iusto est iste est odit.",
      "slug":"labore-reprehenderit-dolorem-repellendus-asperiores"
   },
   "taxonomyValues":[

   ],
   "authorName":"Jane Doe",
   "extras":{
      "title":"Labore reprehenderit dolorem repellendus asperiores.",
      "image":{
         "filename":"kitten.jpg",
         "alt":"A cute kitten",
         "path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
      },
      "excerpt":"Labore reprehenderit dolorem repellendus asperiores. Ut qui dolor debitis esse. Maiores alias …",
      "link":"/homepage/labore-reprehenderit-dolorem-repellendus-asperiores",
      "editLink":"/bolt/edit/1"
   }
}

Which is correct.

But after bumping version to 2.4.0-beta2 I get:

{
   "@context":"/api/contexts/Content",
   "@id":"/api/contents",
   "@type":"hydra:Collection",
   "hydra:member":[
      1,
      "homepage",
      "labore-reprehenderit-dolorem-repellendus-asperiores",
      {
         "id":3,
         "displayName":"Jane Doe",
         "username":"jane_admin",
         "email":"jane_admin@example.org"
      },
      {
         "title":"Labore reprehenderit dolorem repellendus asperiores.",
         "image":{
            "filename":"kitten.jpg",
            "alt":"A cute kitten",
            "path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
         },
         "teaser":"Ut qui dolor debitis esse. Maiores alias repellat maxime ut voluptatem. Eum esse reprehenderit expedita necessitatibus. Animi hic eveniet sed et.\n\nEst pariatur incidunt aut iste. Rem aut nihil et ut natus perspiciatis. Dolore veritatis ab sed repellendus quo deleniti qui.\n\nQui laudantium corrupti labore quidem veniam nemo qui. Sit dolore atque et cumque libero. Omnis earum repellendus hic aut vero aut voluptatem. Ea non magni eligendi occaecati numquam.",
         "content":"Minus sed repellendus corporis nemo. Aut aut veniam at aut aliquid. Architecto tempora quia neque numquam voluptas sint est delectus.\n\nUnde voluptatem animi non ut aut dicta. Omnis vero dolorum aliquid laudantium magni asperiores. Et tempora eveniet soluta modi occaecati.\n\nEa dolorum tenetur voluptatum temporibus illo fuga. Quibusdam et doloribus debitis omnis sed. Tempora in aperiam ullam non odit. Praesentium sunt accusantium dolorem commodi labore eum nostrum quia.",
         "contentlink":"Aut ea iusto est iste est odit.",
         "slug":"labore-reprehenderit-dolorem-repellendus-asperiores"
      },
      [

      ],
      {
         "title":"Labore reprehenderit dolorem repellendus asperiores.",
         "image":{
            "filename":"kitten.jpg",
            "alt":"A cute kitten",
            "path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
         },
         "excerpt":"Labore reprehenderit dolorem repellendus asperiores. Ut qui dolor debitis esse. Maiores alias …",
         "link":"/homepage/labore-reprehenderit-dolorem-repellendus-asperiores",
         "editLink":"/bolt/edit/1"
      },
      "published",
      "fa-home",
      "2018-03-25T03:58:54+00:00",
      "2018-06-19T16:18:20+00:00",
      "2019-01-06T19:14:53+00:00",
      "2019-02-13T22:01:37+00:00"
   ],
   "hydra:totalItems":13,
   "hydra:search":{
      "@type":"hydra:IriTemplate",
      "hydra:template":"/api/contents/1.jsonld{?id,id[],contentType,contentType[],status,status[],createdAt,createdAt[],modifiedAt,modifiedAt[],publishedAt,publishedAt[],depublishedAt,depublishedAt[]}",
      "hydra:variableRepresentation":"BasicRepresentation",
      "hydra:mapping":[
         {
            "@type":"IriTemplateMapping",
            "variable":"id",
            "property":"id",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"id[]",
            "property":"id",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"contentType",
            "property":"contentType",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"contentType[]",
            "property":"contentType",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"status",
            "property":"status",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"status[]",
            "property":"status",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"createdAt",
            "property":"createdAt",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"createdAt[]",
            "property":"createdAt",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"modifiedAt",
            "property":"modifiedAt",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"modifiedAt[]",
            "property":"modifiedAt",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"publishedAt",
            "property":"publishedAt",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"publishedAt[]",
            "property":"publishedAt",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"depublishedAt",
            "property":"depublishedAt",
            "required":false
         },
         {
            "@type":"IriTemplateMapping",
            "variable":"depublishedAt[]",
            "property":"depublishedAt",
            "required":false
         }
      ]
   }
}

Also JSON response is wrong in beta2 - looks like it ignores serialization groups.

Response in beta2 (invalid):

{
   "id":1,
   "contentType":"homepage",
   "slug":"labore-reprehenderit-dolorem-repellendus-asperiores",
   "author":{
      "id":3,
      "displayName":"Jane Doe",
      "username":"jane_admin",
      "email":"jane_admin@example.org"
   },
   "fields":{
      "title":"Labore reprehenderit dolorem repellendus asperiores.",
      "image":{
         "filename":"kitten.jpg",
         "alt":"A cute kitten",
         "path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
      },
      "teaser":"Ut qui dolor debitis esse. Maiores alias repellat maxime ut voluptatem. Eum esse reprehenderit expedita necessitatibus. Animi hic eveniet sed et.\n\nEst pariatur incidunt aut iste. Rem aut nihil et ut natus perspiciatis. Dolore veritatis ab sed repellendus quo deleniti qui.\n\nQui laudantium corrupti labore quidem veniam nemo qui. Sit dolore atque et cumque libero. Omnis earum repellendus hic aut vero aut voluptatem. Ea non magni eligendi occaecati numquam.",
      "content":"Minus sed repellendus corporis nemo. Aut aut veniam at aut aliquid. Architecto tempora quia neque numquam voluptas sint est delectus.\n\nUnde voluptatem animi non ut aut dicta. Omnis vero dolorum aliquid laudantium magni asperiores. Et tempora eveniet soluta modi occaecati.\n\nEa dolorum tenetur voluptatum temporibus illo fuga. Quibusdam et doloribus debitis omnis sed. Tempora in aperiam ullam non odit. Praesentium sunt accusantium dolorem commodi labore eum nostrum quia.",
      "contentlink":"Aut ea iusto est iste est odit.",
      "slug":"labore-reprehenderit-dolorem-repellendus-asperiores"
   },
   "taxonomies":[

   ],
   "extras":{
      "title":"Labore reprehenderit dolorem repellendus asperiores.",
      "image":{
         "filename":"kitten.jpg",
         "alt":"A cute kitten",
         "path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
      },
      "excerpt":"Labore reprehenderit dolorem repellendus asperiores. Ut qui dolor debitis esse. Maiores alias …",
      "link":"/homepage/labore-reprehenderit-dolorem-repellendus-asperiores",
      "editLink":"/bolt/edit/1"
   },
   "status":"published",
   "icon":"fa-home",
   "createdAt":"2018-03-25T03:58:54+00:00",
   "modifiedAt":"2018-06-19T16:18:20+00:00",
   "publishedAt":"2019-01-06T19:14:53+00:00",
   "depublishedAt":"2019-02-13T22:01:37+00:00"
}

Reponse in beta1 (valid):

{
   "id":1,
   "contentType":"homepage",
   "modifiedAt":"2018-06-19T16:18:20+00:00",
   "publishedAt":"2019-01-06T19:14:53+00:00",
   "fieldValues":{
      "title":"Labore reprehenderit dolorem repellendus asperiores.",
      "image":{
         "filename":"kitten.jpg",
         "alt":"A cute kitten",
         "path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
      },
      "teaser":"Ut qui dolor debitis esse. Maiores alias repellat maxime ut voluptatem. Eum esse reprehenderit expedita necessitatibus. Animi hic eveniet sed et.\n\nEst pariatur incidunt aut iste. Rem aut nihil et ut natus perspiciatis. Dolore veritatis ab sed repellendus quo deleniti qui.\n\nQui laudantium corrupti labore quidem veniam nemo qui. Sit dolore atque et cumque libero. Omnis earum repellendus hic aut vero aut voluptatem. Ea non magni eligendi occaecati numquam.",
      "content":"Minus sed repellendus corporis nemo. Aut aut veniam at aut aliquid. Architecto tempora quia neque numquam voluptas sint est delectus.\n\nUnde voluptatem animi non ut aut dicta. Omnis vero dolorum aliquid laudantium magni asperiores. Et tempora eveniet soluta modi occaecati.\n\nEa dolorum tenetur voluptatum temporibus illo fuga. Quibusdam et doloribus debitis omnis sed. Tempora in aperiam ullam non odit. Praesentium sunt accusantium dolorem commodi labore eum nostrum quia.",
      "contentlink":"Aut ea iusto est iste est odit.",
      "slug":"labore-reprehenderit-dolorem-repellendus-asperiores"
   },
   "taxonomyValues":[

   ],
   "authorName":"Jane Doe",
   "extras":{
      "title":"Labore reprehenderit dolorem repellendus asperiores.",
      "image":{
         "filename":"kitten.jpg",
         "alt":"A cute kitten",
         "path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
      },
      "excerpt":"Labore reprehenderit dolorem repellendus asperiores. Ut qui dolor debitis esse. Maiores alias …",
      "link":"/homepage/labore-reprehenderit-dolorem-repellendus-asperiores",
      "editLink":"/bolt/edit/1"
   }
}

Issue Analytics

  • State:closed
  • Created 5 years ago
  • Comments:17 (9 by maintainers)

github_iconTop GitHub Comments

2reactions
soyukacommented, Feb 27, 2019

Actually the issue is that now the ItemNormalizer might be called even though:

  • it’s not a resource class (accepts anything since beta-2)
  • it’s not one of the following formats: json-ld, json-api, hal

Because the AbstractItemNormalizer::supportsNormalization almost always return true and that ApiPlatform\Core\Serializer\ItemNormalizer has no format check.

2reactions
soyukacommented, Feb 27, 2019

@JarJak the comment from @dunglas is something we need to implement so that you don’t face the issue by upgrading. Sorry for the inconvenience.

Read more comments on GitHub >

github_iconTop Results From Across the Web

JSON-LD 1.1 - W3C
This specification defines JSON-LD 1.1, a JSON-based format to serialize Linked Data. The syntax is designed to easily integrate into deployed ...
Read more >
Symfony Serializer with Groups not working - empty output
I am trying to serialise data as JSON with the default Symfony Serializer. To do that I'm trying to use @Groups() as explained...
Read more >
JSON-LD-star
In the JSON serialization, an object structure is represented as a pair of curly brackets surrounding zero or more name/value pairs (or members) ......
Read more >
Building JSON-LD APIs: Best Practices
It allows an application to start at one piece of Linked Data, and follow embedded links to other pieces of Linked Data that...
Read more >
JSON-AD: The Atomic Data serialization format
It is inspired by JSON-LD. It uses JSON, but has some additional constraints: Every single Object is a Resource . Every Key is...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found