Джексон Преобразование строки в объект

Link.java

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "rel", "href","method" })
public class Link {

    @JsonProperty("rel")
    private String rel;
    @JsonProperty("href")
    private String href;
    @JsonProperty("method")
    private Method method;

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
}

У меня есть этот сторонний класс с аннотациями fastxml jackson. Я могу преобразовать заданный объект в строку, используя указанный метод toString(). Есть ли способ использовать эту строку для получения объекта типа Link?

Примечание. Сам объект имеет встроенный объект (у которого есть еще несколько встроенных объектов), и их также необходимо преобразовать в объект метода из самой строки.


person ytibrewala    schedule 05.05.2017    source источник
comment
не используйте toString Используйте jackson ObjectMapper::readValue и ObjectMapper::writeValueAsString   -  person pvpkiran    schedule 05.05.2017
comment
Используйте 1_   -  person Praneeth Ramesh    schedule 05.05.2017
comment
@pvpkiran ... хотя ToStringBuilder можно настроить для вывода JSON, который ObjectMapper сможет использовать.   -  person slim    schedule 05.05.2017
comment
да, вы можете, но есть случаи, когда toString() работает очень плохо, особенно в случаях вложенных объектов и коллекций. Попробуйте распечатать карту или список с помощью toString, а также с ObjectMapper и увидеть разницу   -  person pvpkiran    schedule 05.05.2017


Ответы (1)


Просто поместите комментарий @pvpkiran в ответ.

Используйте класс ObjectMapper из < em>com.fasterxml.jackson.databind

ObjectMapper objectMapper = new ObjectMapper();

Преобразование из объекта в строку:

String jsonString = objectMapper.writeValueAsString(link);

Преобразование из строки в объект:

Link link = objectMapper.readValue(jsonString, type)
person ytibrewala    schedule 12.05.2017
comment
мы также можем вызывать вот так: String jsonString = objectMapper.writeValueAsString(Object); - person Lova Chittumuri; 04.06.2018