使用ObjectMapper的writeValueAsString方法来代替调用对象的toString方法。
示例代码如下:
public class Person {
private String name;
private int age;
// getter and setter methods
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
public class Main {
public static void main(String[] args) throws JsonProcessingException {
Person person = new Person();
person.setName("John");
person.setAge(30);
// Wrong way to convert object to string
ObjectMapper objectMapper = new ObjectMapper();
String jsonWrong = objectMapper.writeValueAsString(person.toString());
System.out.println("Wrong method: " + jsonWrong);
// Correct way to convert object to string
String jsonCorrect = objectMapper.writeValueAsString(person);
System.out.println("Correct method: " + jsonCorrect);
}
}
在这个示例中,Person类有一个重写的toString方法。在Main类中,我们使用ObjectMapper来将Person对象转换为JSON字符串。我们首先使用“错误的”方式,即将调用toString方法的结果作为参数传递给writeValueAsString方法。这不是推荐的方法,因为它会产生不正确的JSON格式。然后,我们用正确的方式将Person对象转换为JSON字符串,即传递对象本身作为参数。这会产生正确的JSON格式。