Java 为什么“;无法反序列化``out-of-START_对象标记”;使用Jackson时抛出
感谢您提出有关属性名称不匹配的问题。然而,我已经使它们一致,但抛出相同的错误Java 为什么“;无法反序列化``out-of-START_对象标记”;使用Jackson时抛出,java,json,jackson,Java,Json,Jackson,感谢您提出有关属性名称不匹配的问题。然而,我已经使它们一致,但抛出相同的错误 我正在使用Jackson将JSON数组转换为Java对象数组 代码如下所示,下面是代码条目: import java.io.File; import com.fasterxml.jackson.databind.ObjectMapper; import jackson.vo.User; public class JsonConvertTest { public static void main(String
我正在使用Jackson将JSON数组转换为Java对象数组 代码如下所示,下面是代码条目:
import java.io.File;
import com.fasterxml.jackson.databind.ObjectMapper;
import jackson.vo.User;
public class JsonConvertTest {
public static void main(String args[]){
try{
ObjectMapper objectMapper = new ObjectMapper();
File file = new File("results.json");
User[] users= objectMapper.readValue(file, User[].class);
}catch(Exception e){
e.printStackTrace();
}
}
}
这是值对象
package jackson.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
@JsonProperty("firstName")
String firstName;
@JsonProperty("lastName")
String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
以下是JSON数组:
{
"users":[
{ "firstName":"Tom", "lastName":"Jackson"},
{ "firstName":"Jenny", "lastName":"Mary"},
{ "firstName":"Red", "lastName":"Blue"},
{ "firstName":"Jason", "lastName":"John"},
{ "firstName":"May", "lastName":"Black"}
]
}
输出为:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `jackson.vo.User[]` out of START_OBJECT token
at [Source: (File); line: 1, column: 1]
提前谢谢你的帮助 我相当肯定这是一个区分大小写的问题。默认情况下,Jackson查找属性“getters”,因此您有“getFirstName”。但是,您的JSON文件是“firstname”
请在源json文件和类之间使用相同的大小写敏感度重试。注意lastname(您的POJO)与lastname(json)的拼写。将pojo更改为firstName和lastName以匹配JSON,或在每个字段上方设置注释,如下所示:
public class User {
@JsonProperty("firstname");
String firstName;
@JsonProperty("lastname");
String lastName;
这是因为属性不匹配。你可以试试这个
public class User {
@JsonProperty("firstname")
String firstName;
@JsonProperty("lastname")
String lastName;
}
@JsonProperty
用于指示外部属性名称,数据格式中使用的名称(JSON或其他受支持的数据格式)JSON文件中的根级对象是JSON对象,但您告诉jackson以用户数组的形式读取该文件
请尝试以下内容:
[
{ "firstName":"Tom", "lastName":"Jackson"},
{ "firstName":"Jenny", "lastName":"Mary"},
{ "firstName":"Red", "lastName":"Blue"},
{ "firstName":"Jason", "lastName":"John"},
{ "firstName":"May", "lastName":"Black"}
]
谢谢你的快速回复。我尝试过将firstname修改为firstname,并将lastname修改为lastname,但输出结果是相同的。您到底更改了什么?JSON文件?请参阅我的问题更新,我已修改JSON文件。我恐怕这不是根本原因,请检查我的问题更新。我恐怕这不是根本原因,请检查我的问题更新,谢谢。