2014-11-21 2 views
0

В 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 г.)». Так что я должен более подробно анализировать случай числа? Или есть другой способ?

ответ

0

Вы отметили этот вопрос как «mongodb», поэтому я угадываю, что ответы, связанные с mongodb, могут помочь. (Хотя ваш вопрос не появляется Монго специфичны.)

MongoDB имеет оператор $ типа, который позволяет запрашивать документы, содержащие определенные типы: http://docs.mongodb.org/manual/reference/operator/query/type/

Этот оператор работает как в стандарте найти запросы и агрегации запросов ,

+0

Благодарим за ответ, но это не то, что я хочу. Я не хочу запрашивать базу данных mongo, вместо этого хочу знать, есть ли способ понять программно, какой тип кодирует значение. См. Мой обновленный вопрос для примера. – Elena

Смежные вопросы