Behalten XMLGregorianCalendar Datum-format nach der Konvertierung von JSON - Lib Jackson

Ich habe ein Objekt mit 2 XMLGregorianCalendar Objekte - man verwendet für Datum und andere für die Zeit. Ich benutze Jackson-Objekt-mapper-konvertieren Sie das Datum in das JSON format. Das Datum vor der Umwandlung ist 2014-02-10 & Zeit ist 11:15:00 Uhr. Nach der Umstellung auf JSON es wird {"date":1392008400000,"time":58500000}. Wie kann ich die behalten das gleiche Datum & Zeit-format ("{"date":2014-02-10,"time":11:15:00}) nach dem drucken im JSON-Format. .

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;


public class TestJSON {

    public static void main(String[] args){

        Date dob=null;
        Date time=null;
        DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
        DateFormat df1=new SimpleDateFormat("hh:mm:ss");
        try {
            dob=df.parse("2014-02-10");
            time=df1.parse("11:15:00");
        } catch (ParseException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println(" Date = " + dob);
        System.out.println(" Time = " + time);

        GregorianCalendar cal = new GregorianCalendar();
        GregorianCalendar cal1 = new GregorianCalendar();
        try {
            cal.setTime(df.parse("2014-02-10"));
            cal1.setTime(df1.parse("11:15:00"));
        } catch (ParseException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }

        XMLGregorianCalendar xmlDate = null;
        XMLGregorianCalendar xmlDate1 = null;
        try {
            xmlDate = DatatypeFactory.newInstance().newXMLGregorianCalendarDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1, cal.get(Calendar.DAY_OF_MONTH), DatatypeConstants.FIELD_UNDEFINED);
            xmlDate1 = DatatypeFactory.newInstance().newXMLGregorianCalendarTime(cal1.get(Calendar.HOUR),cal1.get(Calendar.MINUTE),cal.get(Calendar.SECOND), DatatypeConstants.FIELD_UNDEFINED);
        } catch (DatatypeConfigurationException e1) {
            //TODO Auto-generated catch block
            e1.printStackTrace();
        }
        System.out.println(" Before Converting - Date " + xmlDate);
        System.out.println(" Before Converting - Time " + xmlDate1);

        Data data = new Data();
        data.setDate(xmlDate);
        data.setTime(xmlDate1);



        ObjectMapper mapper = new ObjectMapper();
        try {
            System.out.println("After Converting " + mapper.writeValueAsString(data));
        } catch (JsonProcessingException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }


    }


}




import javax.xml.datatype.XMLGregorianCalendar;

public class Data {

    private XMLGregorianCalendar date;
    private XMLGregorianCalendar time;

    public XMLGregorianCalendar getDate() {
        return date;
    }
    public void setDate(XMLGregorianCalendar date) {
        this.date = date;
    }
    public XMLGregorianCalendar getTime() {
        return time;
    }
    public void setTime(XMLGregorianCalendar time) {
        this.time = time;
    }



}

Funktionierenden CODE (Mit Mixins in Verbindung)

    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;

    import javax.xml.datatype.DatatypeConfigurationException;
    import javax.xml.datatype.DatatypeConstants;
    import javax.xml.datatype.DatatypeFactory;
    import javax.xml.datatype.XMLGregorianCalendar;

    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.SerializationFeature;


    public class TestJSON {

        public static void main(String[] args){

            Date dob=null;
            Date time=null;
            DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
            DateFormat df1=new SimpleDateFormat("hh:mm:ss");
            try {
                dob=df.parse("2014-02-10");
                time=df1.parse("11:15:00");
            } catch (ParseException e) {
                //TODO Auto-generated catch block
                e.printStackTrace();
            }

            System.out.println(" Date = " + dob);
            System.out.println(" Time = " + time);

            GregorianCalendar cal = new GregorianCalendar();
            GregorianCalendar cal1 = new GregorianCalendar();
            try {
                cal.setTime(df.parse("2014-02-10"));
                cal1.setTime(df1.parse("11:15:00"));
            } catch (ParseException e) {
                //TODO Auto-generated catch block
                e.printStackTrace();
            }

            XMLGregorianCalendar xmlDate = null;
            XMLGregorianCalendar xmlDate1 = null;
            try {
                xmlDate = DatatypeFactory.newInstance().newXMLGregorianCalendarDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1, cal.get(Calendar.DAY_OF_MONTH), DatatypeConstants.FIELD_UNDEFINED);
                xmlDate1 = DatatypeFactory.newInstance().newXMLGregorianCalendarTime(cal1.get(Calendar.HOUR),cal1.get(Calendar.MINUTE),cal.get(Calendar.SECOND), DatatypeConstants.FIELD_UNDEFINED);
            } catch (DatatypeConfigurationException e1) {
                //TODO Auto-generated catch block
                e1.printStackTrace();
            }
            System.out.println(" Before Converting - Date " + xmlDate);
            System.out.println(" Before Converting - Time " + xmlDate1);

            Data data = new Data();
            data.setDate(xmlDate);
            data.setTime(xmlDate1);



            ObjectMapper mapper = new ObjectMapper();
            try {
                mapper.addMixIn(Data.class, MyMixin.class);
                System.out.println("After Converting " + mapper.writeValueAsString(data));

            } catch (JsonProcessingException e) {
                //TODO Auto-generated catch block
                e.printStackTrace();
            }


        }


    }


import javax.xml.datatype.XMLGregorianCalendar;

public class Data {

    private XMLGregorianCalendar date;
    private XMLGregorianCalendar time;

    public XMLGregorianCalendar getDate() {
        return date;
    }
    public void setDate(XMLGregorianCalendar date) {
        this.date = date;
    }
    public XMLGregorianCalendar getTime() {
        return time;
    }
    public void setTime(XMLGregorianCalendar time) {
        this.time = time;
    }



}



import javax.xml.datatype.XMLGregorianCalendar;

import com.fasterxml.jackson.annotation.JsonFormat;

public interface MyMixin {

    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
    public XMLGregorianCalendar getDate(); 
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="HH:mm:ss")
    public XMLGregorianCalendar getTime();

}
InformationsquelleAutor Punter Vicky | 2015-10-08
Schreibe einen Kommentar