在MongoDB上保存带有日期格式的json日期字段

时间:2017-05-19 13:34:33

标签: java json mongodb date

我正在使用Mongo DB,在saveData方法中我正在尝试保存数据对象 在Mongo DB上。首先,我以JSON格式转换数据对象,然后保存 Mongo DB上的对象。但是有一个问题。我的类对象有一个属性initialDate 日期类型,但是当此代码将对象保存在Mongo上时,initialDate属性将保存为字符串, 但我需要它以日期格式保存。有人可以帮帮我吗?

public void saveData(ClassObject data) {
    JSONObject jsonObject = new JSONObject(data);
    String dataJson = jsonObject.toString();
    DBObject dbObject = (DBObject) JSON.parse(dataJson);
    DBCollection table = mongoDB.getCollection(data
            .getModel().getProjectName());
    table.insert(dbObject);
}

这里是ClassObject

Class ClassObject {

private int value;
private ParentModel model;  
private Date initialDate;

...
//here get and setters
}

2 个答案:

答案 0 :(得分:1)

datetoStringjsonObject时,date正在转换为字符串。执行JSON.parse -

后,您需要将其转换回DBObject dbObject = (DBObject) JSON.parse(dataJson); // TODO: Convert dbObject's initialDate property back to date type here DBCollection table = mongoDB.getCollection(data .getModel().getProjectName()); 类型
$ sed -E 's/([^;]*);([^;]*);([^;]*);/\1\2\3/' infile
38528;9;5;8;6
7456;2;2;4;6

答案 1 :(得分:1)

将对象转换为JSON会将日期转换为字符串,因为JSON没有日期类型。

您可以手动设置initialDate中的dbObject,如此

 dbObject.put("initialDate", data.getInitialDate());

这应该将日期保存为日期。

更好的解决方案是使用库在java类和json之间进行映射,如此处所述https://stackoverflow.com/a/7684293/965322