Search code examples
javajsonjacksonobjectmapperfasterxml

Convert JSON to Java POJO


I tried to use Jackson FasterXML library, ObjectMapper,

to convert JSON to Java Pojo below,

but could not find a way, for case like below.

            {
            "uniqueID1": {
                "var1": true,
                "var2": 0.0,
                "var3": "cash",
                "vars": {
                    "0": {
                        "varsvar1": "cash",
                        "varsvar2": {
                            "0": {
                                "varsvarvar1": "cash"
                            },
                            "1": {
                                "varsvarvar1": "cheque"
                            }
                        }
                    },
                    "1": {
                        "varsvar1": "cash",
                        "varsvar2": {
                            "0": {
                                "varsvarvar1": "cash"
                            },
                            "1": {
                                "varsvarvar1": "cheque"
                            }
                        }
                    }
                }
            },
            "uniqueID2": {
                "var1": true,
                "var2": 0.0,
                "var3": "cash",
                "vars": {
                    "0": {
                        "varsvar1": "cash",
                        "varsvar2": {
                            "0": {
                                "varsvarvar1": "cash"
                            },
                            "1": {
                                "varsvarvar1": "cheque"
                            }
                        }
                    },
                    "1": {
                        "varsvar1": "cash",
                        "varsvar2": {
                            "0": {
                                "varsvarvar1": "cash"
                            },
                            "1": {
                                "varsvarvar1": "cheque"
                            }
                        }
                    }
                }
            },
            .... can be a lot with different unique id ... 
        }

The unique ID 1 and unique ID 2 are unique,

"0", "1", "0", "1" are also unique ID,

and there can be unlimited unique ID,

so we can't use it as variable name.

There are Json inside Json inside Json too, with 3 depth.

I created 6 Java Pojo classes to,

to represent each Json.

How to use ObjectMapper to convert the Json above to these 6 classes below ?

Or it is not possible, and we should use other Library ?

        public class Pojo1{
            private String uniqueIDPojo1;
            private Pojo2 pojo2;
        }
        
        public class Pojo2{
            private boolean var1;
            private double var2;
            private String var3;
            private Map<String,Pojo3> vars;
        }
        
        public class Pojo3{
            private String uniqueIDPojo3;
            private Pojo4 pojo4;
        }
        
        public class Pojo4{
            private String varsvar1;
            Map<String,Pojo5> varsvar2;
        }
        
        public class Pojo5{
            private String uniqueIDPojo5;
            private Pojo6 pojo6;
        }
        
        public class Pojo6{
            private String varsvarvar1;
        }

Solution

  • try using

    HashMap<String,Pojo2> pojos = new ObjectMapper().readValue(src, new TypeReference<HashMap<String,Pojo2>>() {});