更快的xml对象映射程序将java对象转换为json错误?
嗨,我有一个json数据文件,其中包含一个对象数组。我正在读取json文件并将其转换为java对象列表。然而,当我使用对象映射器将其转换为json文档时,我看到打印的值的精度后跟零。你知道我该怎么修吗 下面是我的json数据文件更快的xml对象映射程序将java对象转换为json错误?,java,jackson,fasterxml,Java,Jackson,Fasterxml,嗨,我有一个json数据文件,其中包含一个对象数组。我正在读取json文件并将其转换为java对象列表。然而,当我使用对象映射器将其转换为json文档时,我看到打印的值的精度后跟零。你知道我该怎么修吗 下面是我的json数据文件 [ { "inventory": "SMS", "msg_text": "This is random text", "status": "ENROUTE", "@timestamp": "2019-09-02T03:26:26.77
[
{
"inventory": "SMS",
"msg_text": "This is random text",
"status": "ENROUTE",
"@timestamp": "2019-09-02T03:26:26.770Z",
"o_error": "",
"flight_id": "92348fa1-ca6c-456a-b3b2-85fba2d2deed",
"recipient": 420736408283,
"account_id": "a56f7e14-20f9-40e6-90c6-10604140ac5f",
"sender": 8800111,
"submission_ts": 1567681407,
"campaign_id": "6f2abca3-b46d-43f3-91be-3278a8dd7dc0",
"nof_segments": 1,
"@version": 1,
"delivery_ts": 1558761537
},
{
"inventory": "SMS",
"msg_text": "This is random text",
"status": "ENROUTE",
"@timestamp": "2019-09-02T09:48:09.213Z",
"o_error": "",
"flight_id": "92348fa1-ca6c-456a-b3b2-85fba2d2deed",
"recipient": 420736408283,
"account_id": "a56f7e14-20f9-40e6-90c6-10604140ac5f",
"sender": 8800111,
"submission_ts": 1567681407,
"campaign_id": "6f2abca3-b46d-43f3-91be-3278a8dd7dc0",
"nof_segments": 1,
"@version": 1,
"delivery_ts": 1549246209
}]
下面是读取文件、将其转换为json对象并打印的代码
ObjectMapper objMapper = new ObjectMapper();
objMapper.registerModule(new JavaTimeModule());
configure(SerializationFeature.WRITE_DATES_作为时间戳,false)
您可以看到提交和交付的数量为.000000000
下面是我的MessageHistory.java文件,用于将json数据绑定到对象
import java.time.Instant;
import java.util.UUID;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
public class MessageHistory {
@JsonProperty("inventory")
private String inventory;
@JsonProperty("msg_text")
private String messageText;
@JsonProperty("status")
private String status;
@JsonProperty("@timestamp")
private Instant timeStamp;
@JsonProperty("o_error")
private String error;
@JsonProperty("flight_id")
private UUID flightId;
@JsonProperty("recipient")
private String recipient;
@JsonProperty("account_id")
private UUID accountId;
@JsonProperty("sender")
private String sender;
@JsonProperty("campaign_id")
private UUID campaignId;
@JsonProperty("nof_segments")
private Integer segmentCount;
@JsonProperty("@version")
private Integer version;
@JsonProperty("submission_ts")
@JsonFormat(shape = JsonFormat.Shape.NUMBER_INT, timezone = "UTC")
private Instant submissionTimeStamp;
@JsonProperty("delivery_ts")
@JsonFormat(shape = JsonFormat.Shape.NUMBER_INT, timezone = "UTC")
private Instant deliveryTimeStamp;
public String getInventory() {
return inventory;
}
public void setInventory(String inventory) {
this.inventory = inventory;
}
public String getMessageText() {
return messageText;
}
public void setMessageText(String messageText) {
this.messageText = messageText;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Instant getTimeStamp() {
return timeStamp;
}
public void setTimeStamp(Instant timeStamp) {
this.timeStamp = timeStamp;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
public UUID getFlightId() {
return flightId;
}
public void setFlightId(UUID flightId) {
this.flightId = flightId;
}
public String getRecipient() {
return recipient;
}
public void setRecipient(String recipient) {
this.recipient = recipient;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public UUID getAccountId() {
return accountId;
}
public void setAccountId(UUID accountId) {
this.accountId = accountId;
}
public UUID getCampaignId() {
return campaignId;
}
public void setCampaignId(UUID campaignId) {
this.campaignId = campaignId;
}
public Integer getSegmentCount() {
return segmentCount;
}
public void setSegmentCount(Integer segmentCount) {
this.segmentCount = segmentCount;
}
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
public Instant getSubmissionTimeStamp() {
return submissionTimeStamp;
}
public void setSubmissionTimeStamp(Instant submissionTimeStamp) {
this.submissionTimeStamp = submissionTimeStamp;
}
public Instant getDeliveryTimeStamp() {
return deliveryTimeStamp;
}
public void setDeliveryTimeStamp(Instant deliveryTimeStamp) {
this.deliveryTimeStamp = deliveryTimeStamp;
}
}
我正在给文件做注释
@JsonProperty("submission_ts")
@JsonFormat(shape = JsonFormat.Shape.NUMBER_INT, timezone = "UTC")
private Instant submissionTimeStamp;
@JsonProperty("delivery_ts")
@JsonFormat(shape = JsonFormat.Shape.NUMBER_INT, timezone = "UTC")
private Instant deliveryTimeStamp;
非常感谢您提供的帮助,以解决为什么打印为json的对象会将.000000附加到这两个字段
谢谢您想禁用该功能
从文件中:
控制是否使用纳秒时间戳(启用)写入数字时间戳值的功能
您可以在
ObjectMapper
中禁用它(适用于所有字段):
ObjectMapper mapper=new ObjectMapper();
registerModule(新的JavaTimeModule());
禁用(SerializationFeature.WRITE_DATES_作为时间戳);
禁用(SerializationFeature.WRITE_DATE_TIMESTAMPS_为_纳秒);
或在字段级别禁用它:
@JsonFormat(shape=shape.NUMBER,
不带=功能。写入\u日期\u时间戳\u为\u纳秒)
私人即时;
如果您打算在多个字段中使用此配置,您可能需要考虑允许创建一个自定义注释,该注释包含一个或多个杰克逊注释:
@保留(值=运行时)
@杰克逊尼奥塞德酒店
@JsonFormat(shape=shape.NUMBER,
不带=功能。写入\u日期\u时间戳\u为\u纳秒)
public@interface JsonTimestamp{
}
然后只需使用新创建的注释:
@JsonTimestamp
私人即时;
您想禁用该功能
从文件中:
控制是否使用纳秒时间戳(启用)写入数字时间戳值的功能
您可以在
ObjectMapper
中禁用它(适用于所有字段):
ObjectMapper mapper=new ObjectMapper();
registerModule(新的JavaTimeModule());
禁用(SerializationFeature.WRITE_DATES_作为时间戳);
禁用(SerializationFeature.WRITE_DATE_TIMESTAMPS_为_纳秒);
或在字段级别禁用它:
@JsonFormat(shape=shape.NUMBER,
不带=功能。写入\u日期\u时间戳\u为\u纳秒)
私人即时;
如果您打算在多个字段中使用此配置,您可能需要考虑允许创建一个自定义注释,该注释包含一个或多个杰克逊注释:
@保留(值=运行时)
@杰克逊尼奥塞德酒店
@JsonFormat(shape=shape.NUMBER,
不带=功能。写入\u日期\u时间戳\u为\u纳秒)
public@interface JsonTimestamp{
}
然后只需使用新创建的注释:
@JsonTimestamp
私人即时;
您可以尝试谷歌的gson进行json到java对象的转换..gson gson=new gson();gson.fromJson(json object,Java class name.class)@NKR在这种情况下使用gson而不是Jackson有什么好处?你可以尝试谷歌的gson进行json到Java对象的转换..gson gson=new gson();fromJson(json对象,Java class name.class)@NKR在这种情况下使用gson而不是Jackson有什么好处?
import java.time.Instant;
import java.util.UUID;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
public class MessageHistory {
@JsonProperty("inventory")
private String inventory;
@JsonProperty("msg_text")
private String messageText;
@JsonProperty("status")
private String status;
@JsonProperty("@timestamp")
private Instant timeStamp;
@JsonProperty("o_error")
private String error;
@JsonProperty("flight_id")
private UUID flightId;
@JsonProperty("recipient")
private String recipient;
@JsonProperty("account_id")
private UUID accountId;
@JsonProperty("sender")
private String sender;
@JsonProperty("campaign_id")
private UUID campaignId;
@JsonProperty("nof_segments")
private Integer segmentCount;
@JsonProperty("@version")
private Integer version;
@JsonProperty("submission_ts")
@JsonFormat(shape = JsonFormat.Shape.NUMBER_INT, timezone = "UTC")
private Instant submissionTimeStamp;
@JsonProperty("delivery_ts")
@JsonFormat(shape = JsonFormat.Shape.NUMBER_INT, timezone = "UTC")
private Instant deliveryTimeStamp;
public String getInventory() {
return inventory;
}
public void setInventory(String inventory) {
this.inventory = inventory;
}
public String getMessageText() {
return messageText;
}
public void setMessageText(String messageText) {
this.messageText = messageText;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Instant getTimeStamp() {
return timeStamp;
}
public void setTimeStamp(Instant timeStamp) {
this.timeStamp = timeStamp;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
public UUID getFlightId() {
return flightId;
}
public void setFlightId(UUID flightId) {
this.flightId = flightId;
}
public String getRecipient() {
return recipient;
}
public void setRecipient(String recipient) {
this.recipient = recipient;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public UUID getAccountId() {
return accountId;
}
public void setAccountId(UUID accountId) {
this.accountId = accountId;
}
public UUID getCampaignId() {
return campaignId;
}
public void setCampaignId(UUID campaignId) {
this.campaignId = campaignId;
}
public Integer getSegmentCount() {
return segmentCount;
}
public void setSegmentCount(Integer segmentCount) {
this.segmentCount = segmentCount;
}
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
public Instant getSubmissionTimeStamp() {
return submissionTimeStamp;
}
public void setSubmissionTimeStamp(Instant submissionTimeStamp) {
this.submissionTimeStamp = submissionTimeStamp;
}
public Instant getDeliveryTimeStamp() {
return deliveryTimeStamp;
}
public void setDeliveryTimeStamp(Instant deliveryTimeStamp) {
this.deliveryTimeStamp = deliveryTimeStamp;
}
}
@JsonProperty("submission_ts")
@JsonFormat(shape = JsonFormat.Shape.NUMBER_INT, timezone = "UTC")
private Instant submissionTimeStamp;
@JsonProperty("delivery_ts")
@JsonFormat(shape = JsonFormat.Shape.NUMBER_INT, timezone = "UTC")
private Instant deliveryTimeStamp;