public class A {
private Class<?> dataType;
public Class<?> getDataType() {
return dataType;
}
public void setDataType(Class<?> dataType) {
this.dataType = dataType;
}
}
public class B {
public static void main(String[] args) {
try {
File file = new File( "fileName.json");
A a = new ObjectMapper().readValue(file, A.class);
} catch (IOException io) {
io.printStackTrace();
}
}
}
fileName.json文件中的内容:
{
“ dataType”:“ java.lang.String”
}
我收到错误消息:org.codehaus.jackson.map.JsonMappingException:无法访问私有java.lang.Class()(来自类java.lang.Class;无法设置访问权限:无法使java.lang.Class构造函数可访问。
json文件中的数据表示是否错误,如果是,那么任何人都可以建议我json文件中A类的正确表示法是什么。
最佳答案
我得到了解决方案:为此,我们必须使用Jackson批注。因此,重写A类。
导入org.codehaus.jackson.annotate.JsonCreator;
导入org.codehaus.jackson.annotate.JsonProperty;
公开课A {
private Class<?> dataType;
public Class<?> getDataType() {
return dataType;
}
public void setDataType(Class<?> dataType) {
this.dataType = dataType;
}
@JsonCreator
public A(@JsonProperty("dataType") String dataType)
{
try {
this.dataType = Class.forName(dataType);
} catch (ClassNotFoundException c) {
c.printStackTrace();
}
}
}