我正在尝试将我创建的名为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)
这里发生了什么?我错过了一些明显的东西吗它不能像文档中所示那样工作。 提前谢谢。
答案 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.ObjectMapper
和org.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);
希望这会有所帮助。