Jackson 라이브러리를 사용하여 JSON
파일을 구문 분석하고 있습니다. 내 JSON은 실제로 다음과 같은 배열 입니다 JSON
Objects
.
JSON 배열 :
[
{
"Id" : "0",
"name" : "John"
},
{
"Id" : "1",
"name" : "Doe"
}
]
POJO 클래스 :
@JsonIgnoreProperties(ignoreUnknown = true)
public class QuestData {
private String Id;
private String name;
public String getId() {
return Id;
}
public String getName() {
return name;
}
}
PARSING JSON :
private void parseJSON(File jsonFile) {
try {
byte[] jsonData = Files.readAllBytes(jsonFile.toPath());
System.out.println(new String(jsonData));
ObjectMapper mapper = new ObjectMapper();
List<QuestData> questDataList = mapper.readValue(jsonData, mapper.getTypeFactory().constructCollectionType(List.class, QuestData.class));
System.out.println("Read values: " + questDataList.get(0).getId());
} catch (IOException e) {
e.printStackTrace();
}
}
내 첫 번째 인쇄 문은 올바른 Json 데이터를 다시 (문자열로) 인쇄합니다.
그러나 다음 인쇄 진술은 말한다 NULL
. 나는 전체 목록을 반복하여 null이 아니지만 운이없는 것이 있는지 확인하려고했습니다.
나는 내가 여기서 뭘 잘못하고 있는지 모른다.
Jackson은 기본적으로 setter 메서드를 사용하여 필드를 설정합니다. 따라서 다음과 같은 setter를 추가하십시오.
@JsonProperty("Id") // otherwise Jackson expects id for setId
public void setId(String id) {
Id = id;
}
또는 Jackson에게 다음 구성으로 필드를 찾도록 지시하십시오.
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
이 경우 Jackson은 클래스의 필드 이름을 Id
JSON 의 필드 이름과 일치시킵니다.Id
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다