Jackson Converting String to Object
Asked Answered
C

1

21

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);
    }
}

I have this third party class with fasterxml jackson annotations. I can convert a given object into a string using the specified toString() method. Is there any way of using that String to get an object of type Link?

Note: The object itself has an embedded object (which has several more embedded objects) and these too needs to be converted into a Method object from the string itself.

Colene answered 5/5, 2017 at 12:5 Comment(4)
don't use toString Use jackson ObjectMapper::readValue and ObjectMapper::writeValueAsStringExtradite
Use new ObjectMapper().readValue(jsonString, Link.class);Frigate
@Extradite ... although ToStringBuilder can be configured to output JSON, which ObjectMapper would be able to consume.Rapid
yes you can but there are cases where toString() performs very badly expecially in cases of nested objects and collections.Try printing a map or list with toString and also with ObjectMapper and see the differenceExtradite
C
69

Just putting the comment by @pvpkiran in an answer.

Use ObjectMapper class from com.fasterxml.jackson.databind

ObjectMapper objectMapper = new ObjectMapper();

Converting from Object to String:

String jsonString = objectMapper.writeValueAsString(link);

Converting from String to Object:

Link link = objectMapper.readValue(jsonString, type)
Colene answered 12/5, 2017 at 9:2 Comment(3)
we can also call like this String jsonString = objectMapper.writeValueAsString(Object);Ponder
what if don't know what is the class type?Spacesuit
Java can't ascertain the class type magically? You can have ton of Classes which could possibly fit itZenia

© 2022 - 2024 — McMap. All rights reserved.