Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更快的xml对象映射程序将java对象转换为json错误?_Java_Jackson_Fasterxml - Fatal编程技术网

更快的xml对象映射程序将java对象转换为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

嗨,我有一个json数据文件,其中包含一个对象数组。我正在读取json文件并将其转换为java对象列表。然而,当我使用对象映射器将其转换为json文档时,我看到打印的值的精度后跟零。你知道我该怎么修吗

下面是我的json数据文件

[
  {
    "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;