简体   繁体   English

将 JSON 转换为 Java POJO

[英]Convert JSON to Java POJO

I tried to use Jackson FasterXML library, ObjectMapper,我尝试使用 Jackson FasterXML 库,ObjectMapper,

to convert JSON to Java Pojo below,将 JSON 转换为 Java Pojo 下面,

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,唯一 ID 1 和唯一 ID 2 是唯一的,

"0", "1", "0", "1" are also unique ID, “0”、“1”、“0”、“1”也是唯一ID,

and there can be unlimited unique ID,并且可以有无限的唯一ID,

so we can't use it as variable name.所以我们不能用它作为变量名。

There are Json inside Json inside Json too, with 3 depth. Json 里面也有 Json 里面 Json 里面有 3 个深度。

I created 6 Java Pojo classes to,我创建了 6 个 Java Pojo 类来,

to represent each Json.代表每个 Json。

How to use ObjectMapper to convert the Json above to these 6 classes below?如何使用 ObjectMapper 将上面的 Json 转换为下面这 6 个类?

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

try using尝试使用

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

It looks to me like在我看来

class VarMap {
    Map<String, Var> varmap;
}
class Var {
    boolean var1;
    double var2;
    String var3;
    Map<String, VarVar> vars;
}
class VarVar {
    String varsvar1;
    Map<String, VarsVarVar> varsvar2;
}
class VarsVarVar {
    String varsvarvar1;
}

which you should be able to parse with objectMapper.readValue(in, VarMap.class) .您应该可以使用objectMapper.readValue(in, VarMap.class)进行解析。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM