为SerializationFeature.INDENT_OUTPUT配置jackson映射器对象时出错

时间:2013-08-26 19:16:37

标签: java json jackson

我正在尝试将我创建的名为User的域对象序列化为json文件。

ObjectMapper mapper = new ObjectMapper();
List<User> users = new ArrayList<User>();

    users.add(user1);
    users.add(user2);
    users.add(user3);

mapper.writeValue(file, users);         

以上工作正常,并以不友好的单行方式将数据写入文件。 我想在写入文件时美化它。所以我遇到了SerializationFeature.INDENT_OUTPUT,但由于某些原因,这不是为了我而编译的。

mapper.configure(SerializationFeature.INDENT_OUTPUT, true);

我在eclipse编译器中遇到的错误如下:

  

该方法在类型中配置(SerializationConfig.Feature,boolean)   ObjectMapper不适用于参数   (SerializationFeature,boolean)

这里发生了什么?我错过了一些明显的东西吗它不能像文档中所示那样工作。 提前谢谢。

2 个答案:

答案 0 :(得分:6)

似乎有Jackson的两个版本在你的类路径1.x和2.x上,你正在混合这两个版本。您的ObjectMapper似乎来自1.x,并且您尝试从2.x版本传递SerializationFeature

因此,您必须使用com.fasterxml.jackson.databind.ObjectMapper(2.x)或必须将SerializationConfig.Feature传递给方法configure

请参阅this了解更改。

答案 1 :(得分:0)

您可能同时拥有com.fasterxml.jackson.databind.ObjectMapperorg.codehaus.jackson.map.ObjectMapper的对象映射器

//com.fasterxml.jackson.databind.ObjectMapper can be used like this,
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.DeserializationFeature;
ObjectMapper mapper = new ObjectMapper()
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

//org.codehaus.jackson.map.ObjectMappe can be used like this,
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
ObjectMapper mapper = new ObjectMapper()
mapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);

希望这会有所帮助。