[
https://issues.apache.org/jira/browse/JOHNZON-415?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
David Blevins updated JOHNZON-415:
----------------------------------
Description:
Attempting deserialize class Email as follows
{code:java}
final String json = "[\"test\",\"domain.com\"]";
final Email email = jsonb.fromJson(json, Email.class);{code}
fails if the adapter is declared on the Email class
{code:java}
@JsonbTypeAdapter(Adapter.EmailClass.class)
public static class Email {
final String user;
final String domain;
//... {code}
and adapter code
{code:java}
public static class EmailClass implements JsonbAdapter<Email, String[]> {
@Override
public String[] adaptToJson(final Email obj) {
return new String[]{obj.user, obj.domain};
}
@Override
public Email adaptFromJson(final String[] parts) {
return new Email(parts[0], parts[1]);
}
{code}
This will work on a write operation. This will work on a read and write in any
order if Email is a field inside another class.
was:
Attempting deserialize class Email as follows
{code:java}
final String json = "[\"test\",\"domain.com\"]";
final Email email = jsonb.fromJson(json, Email.class);{code}
fails if the adapter is declared on the Email class
{code:java}
@JsonbTypeAdapter(Adapter.EmailClass.class)
public static class Email {
final String user;
final String domain;
{code}
{color:#910091}//...{color}
and adapter code
{code:java}
public static class EmailClass implements JsonbAdapter<Email, String[]> {
@Override
public String[] adaptToJson(final Email obj) {
return new String[]{obj.user, obj.domain};
}
@Override
public Email adaptFromJson(final String[] parts) {
return new Email(parts[0], parts[1]);
}
{code}
This will work on a write operation. This will work on a read and write in any
order if Email is a field inside another class.
> Reads fail with Array JsonbTypeAdapter on deserialized class
> ------------------------------------------------------------
>
> Key: JOHNZON-415
> URL: https://issues.apache.org/jira/browse/JOHNZON-415
> Project: Johnzon
> Issue Type: Bug
> Components: JSON-B
> Affects Versions: 2.0.1
> Reporter: David Blevins
> Priority: Major
>
> Attempting deserialize class Email as follows
>
> {code:java}
> final String json = "[\"test\",\"domain.com\"]";
> final Email email = jsonb.fromJson(json, Email.class);{code}
> fails if the adapter is declared on the Email class
> {code:java}
> @JsonbTypeAdapter(Adapter.EmailClass.class)
> public static class Email {
> final String user;
> final String domain;
> //... {code}
> and adapter code
> {code:java}
> public static class EmailClass implements JsonbAdapter<Email, String[]> {
> @Override
> public String[] adaptToJson(final Email obj) {
> return new String[]{obj.user, obj.domain};
> }
> @Override
> public Email adaptFromJson(final String[] parts) {
> return new Email(parts[0], parts[1]);
> }
> {code}
> This will work on a write operation. This will work on a read and write in
> any order if Email is a field inside another class.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)