我有一个json字符串和两个具有不同属性的不同类。类看起来像这样:
studentId
名称
姓
GPA
getter / setter方法
teacherId
名称
姓
getter / setter方法
现在我得到一个json字符串,如果json字符串与对象模型兼容,我需要一个函数来返回布尔值。
所以json可能是这样的:
{studentId: 1213, name: Mike, surname: Anderson, gpa: 3.0}
我需要一个函数来返回true,如下所示:
checkObjectCompatibility(json, Student.class);
答案 0 :(得分:5)
如果json字符串与类不兼容。
mapper.readValue(jsonStr, Student.class);
方法抛出JsonMappingException
所以你可以创建一个方法并调用readValue方法并使用try-catch块来捕获JsonMappingException以返回false,否则返回true。
像这样;
public boolean checkJsonCompatibility(String jsonStr, Class<?> valueType) throws JsonParseException, IOException {
ObjectMapper mapper = new ObjectMapper();
try {
mapper.readValue(jsonStr, valueType);
return true;
} catch (JsonMappingException e) {
return false;
}
}
答案 1 :(得分:2)
实现这一目标的最快方法是试错:
boolean isA(String json, Class expected) {
try {
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(json, expected);
return true;
} catch (JsonMappingException e) {
e.printStackTrace();
return false;
}
}
但我强烈建议以更有条理的方式处理问题,即尽量不要依赖试错。