【发布时间】:2020-05-22 18:45:06
【问题描述】:
我有以下代码。
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
public class MyClass {
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"name\":\"Mahesh\", \"age\":21}}";
try{
Student student = mapper.readValue(jsonString, Student.class);
System.out.println(student);
jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(student);
System.out.println(jsonString);
}
catch (JsonParseException e) { e.printStackTrace();}
catch (JsonMappingException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
}
}
class Student {
private String name;
private int age;
public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "Student [ name: "+name+", age: "+ age+ " ]";
}
}
如我们所见,我传递给mapper.readValue 的字符串是无效的json 字符串(末尾有额外的})。但是当我运行代码时,它会成功运行并给出以下输出。
Student [ name: Mahesh, age: 21 ]
{
"name" : "Mahesh",
"age" : 21
}
我是JsonParseException,但它没有抛出异常?
有谁知道为什么 ObjectMapper 在反序列化时会忽略 json 字符串末尾的附加 }?
【问题讨论】:
标签: java json objectmapper jackson-databind