如何理解JsonElement是否对日期进行编码

时间:2014-11-21 16:06:51

标签: java mongodb

在java程序中,我解析了一个json文档。当我这样做时,我需要分析JsonElement给出的值的(BSON)类型。例如,如果我有以下文件:

{"name" : "John", "age" : 35, "highEducation" : true, "birthDate" : 01/01/1979}

我想检测“name”的值是一个字符串,“age”的值是一个整数,“highEducation”的值是一个布尔值,“birthDate”的值是一个日期(假设那个01/01/1970是实际代表日期的方式,虽然它是这种形状的东西ISODate(“2014-09-17T23:25:56.314Z”),我是对的吗?)。

如果我有一个原语,我可以检查它是字符串,数字还是布尔值,如下所示:

private static int getBSONType(JsonElement element) {
    int type = BSON.UNDEFINED;
    if ( element.isJsonPrimitive() ) {
        JsonPrimitive primitive = element.getAsJsonPrimitive();

        if ( primitive.isNumber() ) {
            type = BSON.NUMBER;
        } else if (primitive.isString()) {
            type = BSON.STRING;
        } else if (primitive.isBoolean()) {
            type = BSON.BOOLEAN;
        } else  {
            //...
        } 
    } else {
        //...
    }
    return type;
}

我无法弄清楚如何理解原始是否是约会?理想情况下,我可以添加类似

的内容
        } else if (primitive.isDate()) {
            type = BSON.DATE;
        } 

但这是不可能的。或者我不应该将元素作为原始元素,而不是其他东西?

Here它说“BSON Date是一个64位整数,表示自Unix纪元(1970年1月1日)以来的毫秒数”。那么我应该更深入地分析数字的情况吗?还是有另一种方式?

1 个答案:

答案 0 :(得分:0)

您已将此问题标记为' mongodb'所以我猜测有mongodb相关的答案可能会有所帮助。 (虽然你的问题并不是特定的。)

Mongodb有一个$ type运算符,允许您查询包含特定类型的文档: http://docs.mongodb.org/manual/reference/operator/query/type/

此运算符适用于标准查找查询和聚合查询。