将 JSON 转换为 Java POJO
Convert JSON to Java POJO
我尝试使用 Jackson FasterXML 库 ObjectMapper,
将JSON转换为下面的Java Pojo,
但找不到方法,例如下面的情况。
{
"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 ...
}
唯一ID 1和唯一ID 2是唯一的,
“0”、“1”、“0”、“1”也是唯一ID,
并且可以有无限个唯一ID,
所以我们不能用它作为变量名。
在Json里面也有Json在Json里面,有3个深度。
我创建了 6 个 Java Pojo 类 到,
代表每个Json.
如何使用ObjectMapper把上面的Json转换成下面这6个类?
或者不可以,我们应该使用其他库?
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;
}
尝试使用
HashMap<String,Pojo2> pojos = new ObjectMapper().readValue(src, new TypeReference<HashMap<String,Pojo2>>() {});
我觉得像
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;
}
你应该可以用 objectMapper.readValue(in, VarMap.class)
.
来解析
我尝试使用 Jackson FasterXML 库 ObjectMapper,
将JSON转换为下面的Java Pojo,
但找不到方法,例如下面的情况。
{
"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 ...
}
唯一ID 1和唯一ID 2是唯一的,
“0”、“1”、“0”、“1”也是唯一ID,
并且可以有无限个唯一ID,
所以我们不能用它作为变量名。
在Json里面也有Json在Json里面,有3个深度。
我创建了 6 个 Java Pojo 类 到,
代表每个Json.
如何使用ObjectMapper把上面的Json转换成下面这6个类?
或者不可以,我们应该使用其他库?
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;
}
尝试使用
HashMap<String,Pojo2> pojos = new ObjectMapper().readValue(src, new TypeReference<HashMap<String,Pojo2>>() {});
我觉得像
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;
}
你应该可以用 objectMapper.readValue(in, VarMap.class)
.