В java-программе я разбираю json-документ. Хотя я делаю это, мне нужно проанализировать тип (BSON) значения, заданного JsonElement. Например, если у меня есть следующий документ:Как понять, кодирует ли JsonElement дату
{"name" : "John", "age" : 35, "highEducation" : true, "birthDate" : 01/01/1979}
Я хочу, чтобы обнаружить, что значение «имя» является строкой, то значение «возраст» представляет собой целое число, значение «highEducation» является boolean, а значение «dateDate» - это дата (предположим, что 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 (1 января 1970 г.)». Так что я должен более подробно анализировать случай числа? Или есть другой способ?
Благодарим за ответ, но это не то, что я хочу. Я не хочу запрашивать базу данных mongo, вместо этого хочу знать, есть ли способ понять программно, какой тип кодирует значение. См. Мой обновленный вопрос для примера. – Elena