Deserialization of embedded Java objects

I have to deserialize the following JSON to use the Jackson library to enter the client class

{
   "code":"C001","city": "Pune","street": "ABC Road"
}

And classes as

class Address{
    String city;
    String street;
}

class Customer{
    String code;
    Address address;
}

I have found a similar problem on the stack: Java Jackson embedded object deserialization

But the answer doesn't apply to me Besides, I just want to use the Jackson library

How do I map this JSON to a customer object?

Solution

You can add a @ jsonunwrapped comment in the address field of the customer class Here is an example:

public class JacksonValue {
    final static String JSON = "{\n"
            +"   \"code\":\"C001\",\n"
            +"   \"city\": \"Pune\",\n"
            +"   \"street\": \"ABC Road\"\n"
            +"}";

    static class Address {
        public String city;
        public String street;

        @Override
        public String toString() {
            return "Address{" +
                    "city='" + city + '\'' +
                    ",street='" + street + '\'' +
                    '}';
        }
    }

    static class Customer {
        public String code;
        @JsonUnwrapped
        public Address address;

        @Override
        public String toString() {
            return "Customer{" +
                    "code='" + code + '\'' +
                    ",address=" + address +
                    '}';
        }
    }


    public static void main(String[] args) throws IOException {
        final ObjectMapper mapper = new ObjectMapper();
        System.out.println(mapper.readValue(JSON,Customer.class));
    }
}

Output:

Customer{code='C001',address=Address{city='Pune',street='ABC Road'}}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>