Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-2318

UUID serialization to JSON causes parsing error.

    • Type: Icon: Task Task
    • Resolution: Done
    • Priority: Icon: Minor - P4 Minor - P4
    • None
    • Affects Version/s: 3.3.0
    • Component/s: BSON, JSON
    • None

      Hello.
      I have a problem with Java UUID serialization. I'm having a UUID object and wanna serialize it:

      Java
      JSON.serialize(myUuid)
      

      Now when using this snipped in a more complex JSON as the following and parsing it with the code below the json, an error shows up.

      json
      {  
         "_id":"w1bEDr6",
         "server":"Lobby-01",
         "created":{  
            "$date":"2016-09-21T09:00:19.001Z"
         },
         "messages":[  
            {  
               "sender":{  
                  "$uuid":"93ede72e-3ef0-42eb-a37b-62477df6497f"
               },
               "message":"PLAYER_JOIN",
               "type":"EVENT",
               "timestamp":{  
                  "$date":"2016-09-21T09:00:19.002Z"
               }
            },
            {  
               "sender":{  
                  "$uuid":"93ede72e-3ef0-42eb-a37b-62477df6497f"
               },
               "message":"/chatlog",
               "type":"COMMAND",
               "timestamp":{  
                  "$date":"2016-09-21T09:00:23.821Z"
               }
            },
            {  
               "sender":{  
                  "$uuid":"93ede72e-3ef0-42eb-a37b-62477df6497f"
               },
               "message":"PLAYER_QUIT",
               "type":"EVENT",
               "timestamp":{  
                  "$date":"2016-09-21T09:00:25.643Z"
               }
            }
         ]
      }
      
      Java
      Document.parse(json)
      
      Error
      java.lang.IllegalArgumentException: Invalid BSON field name $uuid
          at org.bson.AbstractBsonWriter.writeName(AbstractBsonWriter.java:494)
          at org.bson.codecs.DocumentCodec.writeMap(DocumentCodec.java:188)
          at org.bson.codecs.DocumentCodec.writeValue(DocumentCodec.java:172)
          at org.bson.codecs.DocumentCodec.writeMap(DocumentCodec.java:189)
          at org.bson.codecs.DocumentCodec.writeValue(DocumentCodec.java:172)
          at org.bson.codecs.DocumentCodec.writeIterable(DocumentCodec.java:197)
          at org.bson.codecs.DocumentCodec.writeValue(DocumentCodec.java:170)
          at org.bson.codecs.DocumentCodec.writeMap(DocumentCodec.java:189)
          at org.bson.codecs.DocumentCodec.encode(DocumentCodec.java:131)
          at org.bson.codecs.DocumentCodec.encode(DocumentCodec.java:45)
          at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:63)
          at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:29)
          at com.mongodb.connection.InsertCommandMessage.writeTheWrites(InsertCommandMessage.java:101)
          at com.mongodb.connection.InsertCommandMessage.writeTheWrites(InsertCommandMessage.java:43)
          at com.mongodb.connection.BaseWriteCommandMessage.encodeMessageBodyWithMetadata(BaseWriteCommandMessage.java:129)
          at com.mongodb.connection.RequestMessage.encodeWithMetadata(RequestMessage.java:160)
          at com.mongodb.connection.WriteCommandProtocol.sendMessage(WriteCommandProtocol.java:212)
          at com.mongodb.connection.WriteCommandProtocol.execute(WriteCommandProtocol.java:101)
          at com.mongodb.connection.InsertCommandProtocol.execute(InsertCommandProtocol.java:67)
          at com.mongodb.connection.InsertCommandProtocol.execute(InsertCommandProtocol.java:37)
          at com.mongodb.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:159)
          at com.mongodb.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:286)
          at com.mongodb.connection.DefaultServerConnection.insertCommand(DefaultServerConnection.java:115)
          at com.mongodb.operation.MixedBulkWriteOperation$Run$2.executeWriteCommandProtocol(MixedBulkWriteOperation.java:455)
          at com.mongodb.operation.MixedBulkWriteOperation$Run$RunExecutor.execute(MixedBulkWriteOperation.java:646)
          at com.mongodb.operation.MixedBulkWriteOperation$Run.execute(MixedBulkWriteOperation.java:401)
          at com.mongodb.operation.MixedBulkWriteOperation$1.call(MixedBulkWriteOperation.java:179)
          at com.mongodb.operation.MixedBulkWriteOperation$1.call(MixedBulkWriteOperation.java:168)
      at com.mongodb.operation.MixedBulkWriteOperation$1.call(MixedBulkWriteOperation.java:168)                                                                       [14/9133]
          at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:230)
          at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:221)
          at com.mongodb.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:168)
          at com.mongodb.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:74)
          at com.mongodb.Mongo.execute(Mongo.java:781)
          at com.mongodb.Mongo$2.execute(Mongo.java:764)
          at com.mongodb.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:515)
          at com.mongodb.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:306)
          at com.mongodb.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:297)
      <rest of stacktrace removed>
      

      Any idea what's going on here? Is this a bug or an error with my code?

            Assignee:
            Unassigned Unassigned
            Reporter:
            sebastianbinder Sebastian Binder
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: