Json To Java Object具有Class <! - ? - >成员变量

时间:2014-03-07 18:18:19

标签: java json jackson deserialization

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类的正确表示法。

1 个答案:

答案 0 :(得分:0)

  • 我得到了解决方案:我们必须使用Jackson注释。所以改写A类。

import org.codehaus.jackson.annotate.JsonCreator;

import 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();
    }
}

}