Comments (8)
Hey @Kylar42, tx for reporting. Approach you are suggesting is already used in deserialisation, will do the same for the serialisation.
from jsonapi-converter.
Sorry, it was related to Jackson not picking up JsonIgnore property. But, still I guess it's an error if I had to include the fields :
Event contains a field
@Relationship("tickets") public List<Ticket> tickets;
And Ticket contains Event
com.github.jasminb.jsonapi.exceptions.DocumentSerializationException: java.lang.IllegalArgumentException: Infinite recursion (StackOverflowError) (through reference chain: org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayList[0]->org.fossasia.openevent.app.common.data.models.Ticket["event"]->org.fossasia.openevent.app.common.data.models.Event["tickets"]->java.util.ArrayL...
from jsonapi-converter.
Hey again @Kylar42, after looking at this again, I found that there are two problems here which need solving.
First one is related to Jackson and second one to the library itself.
To go around jackson related issue, one needs to properly annotate model classes so jackson can correctly serialise objects with cycles:
@JsonIdentityInfo(generator = ObjectIdGenerators.StringIdGenerator.class, property = "id")
Second issue was with the library itself, I've fixed it and pushed to develop
.
from jsonapi-converter.
Awesome. When do you plan on doing a 0.5 release?
from jsonapi-converter.
Hey, still no exact time for the 0.5. You can use the snapshot release in the meantime.
from jsonapi-converter.
OK, just tested it - works great, thanks!
from jsonapi-converter.
This is still an issue @jasminb
from jsonapi-converter.
Hey @iamareebjamal, Please provide a test case that reproduces the issue.
from jsonapi-converter.
Related Issues (20)
- How to generate this nested JSON (tenor) ? HOT 1
- Should ALLOW_UNKNOWN_TYPE_IN_RELATIONSHIP be less restrictive HOT 7
- @Id obfuscated by proguard even after excluding the annotation HOT 2
- POST Example with RestTemplate HOT 2
- How to configure ObjectMapper? HOT 2
- @Type serialization HOT 2
- Document collection always throw error while using readCollections HOT 1
- Object with relations itself HOT 1
- @Relationship is not being deserialized HOT 2
- Creating a resource on the server - required id field HOT 2
- Does the library support Javas webclient and the reactor implementation? HOT 2
- "jsonapi": { "version": "1.0" } Parser HOT 2
- Get value above "attributes" level HOT 2
- Relationship attributes dont serialized HOT 3
- The library does not support JSON Specification "8.3 Inclusion of Related Resources" HOT 13
- Class doesn't have a Type annotation error, even though the class does have one HOT 3
- Proguard issues with jsonapi-converter when Android project to targets java 17 HOT 2
- InvalidJsonApiResourceException: Resource must contain at least one of 'data', 'error' or 'meta' nodes
- Handling local identifier ("lid") when creating resource HOT 4
- Backward compatibility HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jsonapi-converter.