JSON deserialiser для установки пользовательских свойств в POJO - PullRequest
0 голосов
/ 13 ноября 2018

Я использую Джексона для отображения JSON на Java POJO. Я хочу установить два свойства в POJO из значения в JSON, разделив значение.

{
    "email": "xyz@hello.com",
}  

и POJO

public class TestPojo { 

    @JsonProperty("email")
    private String emailAddress; 

    /*is there any annotation available that I can split the email 
    address with a delimiter which is '@' to first and second 
    properties*/
    private String first; //gives value xyz
    private String second;//gives value hello.com
}

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 13 ноября 2018

Вы можете взломать эту логику в своем общедоступном сеттере.Например:

class MyPojo {
        // no need for this annotation here actually, covered by setter
        // at least for deserialization
        @JsonProperty
        String email;
        String first;
        String last;

        @JsonProperty("email")
        public void setEmail(String email) {
            this.email = email;
            String[] split = email.split("@");
            // TODO check length etc.
            this.first = split[0];
            this.last = split[1];
        }
        // just for testing
        @Override
        public String toString() {
            return String.format(
                "email: %s, first: %s, last: %s%n", email, first, last
            );
        }
}

Затем, где-то еще ...

String json = "{ \"email\": \"xyz@hello.com\"}";
ObjectMapper om = new ObjectMapper();
MyPojo pojo = om.readValue(json, MyPojo.class);
System.out.println(pojo);

Выход

email: xyz@hello.com, first: xyz, last: hello.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...