У меня есть строка JSON:как отобразить значение JSON объекта Java с помощью ДЖЕКСОНА-аннотаций
{
"title": "PowerPoint Presentation",
"author": "Hana",
"subject": null,
"keywords": null,
"created_date": "2016-03-25 15:11:17",
"modified_date": "2016-03-28 17:27:06",
"creator": null,
"producer": "LibreOffice 5.0",
"pdfversion": null,
"file_size": 149225,
"total_page": 24
}
и объект Java
public class ContentInfo {
@JsonProperty("title")
private String title;
@JsonProperty("author")
private String author;
@JsonProperty("subject")
private String subject;
@JsonProperty("keywords")
private String keywords;
@JsonProperty("created_date")
private String createdDate;
@JsonProperty("modified_date")
private String modifiedDate;
// (application name that create original file of PDF)
@JsonProperty("creator")
private String creator;
// (application name that create PDF)
@JsonProperty("producer")
private String producer;
@JsonProperty("pdfversion")
private String pdfversion;
@JsonProperty("file_size")
private long fileSize;
@JsonProperty("total_page")
private long totalPage;
public ContentInfo() {
}
public ContentInfo(String title, String author, String subject, String keywords, String createdDate, String modifiedDate, String creator, String producer, String pdfversion, long fileSize, long totalPage, PageViewSetting page_view_setting) {
this.title = title;
this.author = author;
this.subject = subject;
this.keywords = keywords;
this.createdDate = createdDate;
this.modifiedDate = modifiedDate;
this.creator = creator;
this.producer = producer;
this.pdfversion = pdfversion;
this.fileSize = fileSize;
this.totalPage = totalPage;
this.page_view_setting = page_view_setting;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public String getSubject() {
return subject;
}
public String getKeywords() {
return keywords;
}
public String getCreatedDate() {
return createdDate;
}
public String getModifiedDate() {
return modifiedDate;
}
public String getCreator() {
return creator;
}
public String getProducer() {
return producer;
}
public String getPdfversion() {
return pdfversion;
}
public long getFileSize() {
return fileSize;
}
public long getTotalPage() {
return totalPage;
}
public void setTitle(String title) {
this.title = title;
}
public void setAuthor(String author) {
this.author = author;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void setKeywords(String keywords) {
this.keywords = keywords;
}
public void setCreatedDate(String createdDate) {
this.createdDate = createdDate;
}
public void setModifiedDate(String modifiedDate) {
this.modifiedDate = modifiedDate;
}
public void setCreator(String creator) {
this.creator = creator;
}
public void setProducer(String producer) {
this.producer = producer;
}
public void setPdfversion(String pdfversion) {
this.pdfversion = pdfversion;
}
public void setFileSize(long fileSize) {
this.fileSize = fileSize;
}
}
Я использую следующий код, чтобы отобразить их:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
data = objectMapper.readValue(this.jsonContentInfoData, ContentInfo.class);
Однако результат ResponseBody неверен в некотором поле:
"content_info": {
"title": "PowerPoint Presentation"
"author": "Hana"
"subject": null
"keywords": null
"created_date": "2016-03-25 15:11:17"
"creator": null
"producer": "LibreOffice 5.0"
"pdfversion": null
"modified_date": "2016-03-28 17:27:06"
"file_size": 0
"total_page": 0
}
Вы поставили точку останова на строку data = и проверили значение 'this.jsonContentInfoData' для правильности? Кроме того, у вашего класса ContentInfo есть getters/setters? Ваши поля закрыты, поэтому я предполагаю, что вы это делаете. Я бы проверял, что те, которые не установлены, не имеют должным образом названного getter и setter. – pczeus
Я отлаживал его. this.jsonContentInfoData верна – Adam
ОК, можете ли вы показать нам весь класс ContentInfo? – pczeus