jackson IOException: Невозможно десериализовать класс com.mycompany.models.Person $ Address (типа нестатического класса-члена) как Bean

У меня есть класс, который выглядит так:

public class Person {
    public class Address {
        private String line1;
        private String line2;
        private String zipCode;
        private String state;

        // standard public getters and setters for the class here
   }

private String name;
private String address;

// standard public getters and setters for the class here

}

и вот как я использую с ним Джексона.

public class JsonTest {
    public static <T> Object fromJson(String jsonAsString, Class<T> pojoClass)
throws JsonMappingException, JsonParseException, IOException {
        return m.readValue(jsonAsString, pojoClass);
    }

    public static String toJson(Object pojo, boolean prettyPrint)
throws JsonMappingException, JsonGenerationException, IOException {
        StringWriter sw = new StringWriter();
        JsonGenerator jg = jf.createJsonGenerator(sw);
        if (prettyPrint) {
            jg.useDefaultPrettyPrinter();
        }
        m.writeValue(jg, pojo);
        return sw.toString();
    }

    public static void main(String[] args) {
         Person p = new Person();
         String json = this.toJson(p, true); // converts ‘p’ to JSON just fine
         Person personFromJson = this.fromJson(json, Person.class); // throws exception!!!
    }
}

3-я строка основного метода (где я пытаюсь преобразовать json в объект Person) , выдает следующее исключение:

IOException: Can not deserialize Class com.mycompany.models.Person$Address (of type non-static member class) as a Bean

что я делаю не так?

12
задан 31 July 2011 в 16:40
поделиться