Ich habe ein Feld in einem MongoDB-Dokument, das eine beliebig große Zahl speichert. Wenn ich es als DBObject (Java-Treiber für MongoDB) abrufen, habe ich manchmal in eine Classcast laufen:MongoDB/Java: Geben Sie Sicherheit in DBObjects ein
DBObject obj = collection.findOne();
long val = (Long)(o.get("numericVal"));
Wenn der in numericVal
gespeicherten Wert ist, sagen wir, 1234567890, gelingt es dem Guss auf Long. Wenn es beispielsweise 12345 ist, gibt DBObject.get() ein Double zurück, und die Umwandlung schlägt fehl.
Wie kann ich die Typensicherheit beim Deserialisieren von MongoDB DBObjects sicherstellen?
sind Sie positive der Wert '12345'? Gibt es einen Weg mit Mongo, um den Rohwert zu betrachten - hat er eine JSON-Repräsentation? –
Ich habe es über die Shell als 12345 eingegeben, aber wenn ich es in der Shell drucke, erscheint es als 12345.0. offensichtlich ist das ein Problem auf der Seite des Parsers (Java-Treiber), aber ich weiß nicht, wie es auf der Mongo-Seite überhaupt passiert ist. das heißt, ich würde gerne wissen, wie typsicherheit im allgemeinen mit dem java-treiber zu erhalten. – ericsoco