Jessica jackson deserialization without inner classes

I have a question about Json deserialization using Jackson. I would like to deserialize a Json file using a class like this: (taken from http://wiki.fasterxml.com/JacksonInFiveMinutes )

public class User 
{
    public enum Gender { MALE, FEMALE };
    public static class Name {
      private String _first, _last;
      public String getFirst() { return _first; }
      public String getLast() { return _last; }
      public void setFirst(String s) { _first = s; }
      public void setLast(String s) { _last = s; }
    }
    private Gender _gender;
    private Name _name;
    private boolean _isVerified;
    private byte[] _userImage;
    public Name getName() { return _name; }
    public boolean isVerified() { return _isVerified; }
    public Gender getGender() { return _gender; }
    public byte[] getUserImage() { return _userImage; }
    public void setName(Name n) { _name = n; }
    public void setVerified(boolean b) { _isVerified = b; }
    public void setGender(Gender g) { _gender = g; }
    public void setUserImage(byte[] b) { _userImage = b; }
}

The Json file can be deserialized using the so-called "Full Data Binding" as follows:

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("user.json"), User.class);

My problem is using the inner class "Name". I would like to do the same without using inner classes. The User class would become:

import Name;
import Gender;
public class User 
{
    private Gender _gender;
    private Name _name;
    private boolean _isVerified;
    private byte[] _userImage;
    public Name getName() { return _name; }
    public boolean isVerified() { return _isVerified; }
    public Gender getGender() { return _gender; }
    public byte[] getUserImage() { return _userImage; }
    public void setName(Name n) { _name = n; }
    public void setVerified(boolean b) { _isVerified = b; }
    public void setGender(Gender g) { _gender = g; }
    public void setUserImage(byte[] b) { _userImage = b; }
}

This means that in order to determine deserialization, you need to specify a way to display all the required classes.

Is it possible? I looked through the documentation, but I can not find a solution.

, Javassist .

+3
2

Name . Jackson .

Name User, ? -.

edit: , , Name . , .

+6

. . , , , JAXB, , , , ( , ).

+1

Source: https://habr.com/ru/post/1739838/


All Articles