Existe-t-il une librairie sérialiseur/désérialiseur BSON pour PHP ou Java?BSO serializer/deserializer
Répondre
Vous pouvez vérifier les pilotes MongoDB pour ces langues, puisque MongoDB utilise BSON. Voyez ce qu'ils utilisent, ou volez leur implémentation.
Pas pour Java, mais voici un pour Obj-C: https://github.com/martinkou/bson-objc/
Une autre possibilité est BSON4Jackson extension pour Jackson, qui ajoute le support pour BSON lecture/écriture.
L'encodeur/décodeur BSON en Java est assez trivial. L'extrait de code suivant provient de mon application, il est donc dans Scala. Je suis sûr que vous pourriez facilement créer une implémentation Java.
import org.bson.BSON
import com.mongodb.{DBObject, DBDecoder, DefaultDBDecoder}
def convert(dbo: DBObject): Array[Byte] =
BSON.encode(dbo)
// NB! this is a stateful object and thus it's not thread-safe, so have
// to create one per decoding
def decoder: DBDecoder = DefaultDBDecoder.FACTORY.create
def convert(data: Array[Byte]): DBObject =
// NOTE: we do not support Ref in input, that's why "null" for DBCollection
decoder.decode(data, null)
def convert(is: InputStream): DBObject =
// NOTE: we do not support Ref in input, that's why "null" for DBCollection
decoder.decode(is, null)
La seule note importante est que DBEncoder
instance possède un état interne (re) utilise lors du décodage, il est donc thread-safe. Cela devrait être correct si vous décodez les objets un par un, mais sinon vous feriez mieux de créer une instance par session de décodage.
vérifier ce lien http://php.net/manual/en/ref.mongo.php
bson_decode - Désérialise un objet BSON dans un tableau PHP
bson_encode - Sérialise une variable PHP dans une chaîne BSON
Et voici un 11 C++ JSON codeur et décodeur que j'ai fait en utilisant Rapidjson, parce que l'encodeur JSON natif (BSONObj::jsonString
) utilise un codage non standard pour les longs: https://gist.github.com/ArtemGr/2c44cb451dc6a0cb46af
En outre, contrairement au codeur JSON natif, celui-ci n'a aucun problème pour décoder les tableaux de niveau supérieur.