Hi Tatu!
In this test I have simple User class and dummy UserContainer class, that has one User property. Next, I create an array of 2 elements: user and userContainer with reference to same user.
When first element of array is user, and second is container - deserialization works fine. I get this serialized string:
[
"java.util.ArrayList",
[
[
"deserialization.fail.example.User",
{
"id": 42,
"login": "cool_man"
}
],
[
"deserialization.fail.example.UserContainer",
{
"user": 42
}
]
]
]
Because jackson knows what is 42 here.
But if I put userContainer at first place in my array, and user at second place, serialized data would be
[
"java.util.ArrayList",
[
[
"deserialization.fail.example.UserContainer",
{
"user": [
"deserialization.fail.example.User",
{
"id": 42,
"login": "cool_man"
}
]
}
],
42
]
]
So, user serialized as id, but no type information saved about user. And when I deserialize this I get an array with Integer 42 at second place, not user.
How to serialize untyped collections properly?