在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日)以来的毫秒数”。那么我应该更深入地分析数字的情况吗?还是有另一种方式?
答案 0 :(得分:0)
您已将此问题标记为' mongodb'所以我猜测有mongodb相关的答案可能会有所帮助。 (虽然你的问题并不是特定的。)
Mongodb有一个$ type运算符,允许您查询包含特定类型的文档: http://docs.mongodb.org/manual/reference/operator/query/type/
此运算符适用于标准查找查询和聚合查询。