je dois communiquer avec shell MongoDB via Java
Pour expliquer en un mot, je me sers quelque chose comme Runtime.exec (communes exec spécifiquement) pour appeler MongoDB shell in --eval modeMongoDB - Comment consommer printjson sortie en Java
En utilisant cette approche, je suis en mesure d'invoquer avec succès les commandes MongoDB, récupérer la sortie dans un flux (et imprimer sur stdout par exemple)
Tout va bien jusqu'à ce point.
Je dois maintenant « analyser » cette sortie en quelque chose comme un tableau de JSONObject
(je peux utiliser une bibliothèque JSON comme Jackson, etc. qui peuvent convenir à ce sujet) afin que je puisse "masser" la sortie en fonction de certaines exigences. (Changer le format, supprimer des paires de valeurs clés, etc.)
Lorsque je regarde la sortie générée par printjson dans le cas de tableaux au moins, il ne semble pas être un tableau json valide mais plutôt des objets json valides séparés par une nouvelle ligne sans la virgule entre les deux ou en entourant [] cela en ferait un tableau valide.
Dans ce cas, des suggestions sur la façon d'analyser cette sortie dans un certain type d'objets support que je peux utiliser pour lire/modifier des paires de valeurs clés?
Je n'ai pas les commandes de JSON au moment de la compilation, mais ne sais que ces commandes se termineront toujours dans un printjson
EDIT -
Donc, pour simplifier, par exemple, je cherche un moyen pour analyser la sortie suivante en Java Objects -
(les paires de clés individuelles/valeur ne sont pas connus au moment de la compilation)
{
"_id" : ObjectId("4db0e0289523f82ff6cd90d4"),
"calendar_date" : "2009-11-10",
"product_id" : 8,
"channel" : "website",
"country" : "USA",
"total_unit_count" : 740,
"total_amount" : 11367.29
}
{
"_id" : ObjectId("4db0e0289523f82ff6cd90d5"),
"calendar_date" : "2009-11-10",
"product_id" : 8,
"channel" : "website",
"country" : "Australia",
"total_unit_count" : 740,
"total_amount" : 13893.09
}
{
"_id" : ObjectId("4db0e0289523f82ff6cd90d6"),
"calendar_date" : "2009-11-10",
"product_id" : 8,
"channel" : "retail",
"country" : "USA",
"total_unit_count" : 13,
"total_amount" : 8296.89
}
Vous utiliseriez un analyseur Java JSON, dont plusieurs sont répertoriés sur l'un des sites que vous liez. http://json.org/ –
Y at-il une raison pour laquelle vous ne voulez pas utiliser le pilote Java MongoDB? L'objet support dans ce cas serait DBObject et votre code sera beaucoup plus propre que la sortie JSON d'évaluation eval'd. – lobster1234
@lobster - Ce programme java doit accepter les commandes javascript donc je ne suis pas sûr de savoir comment/si je pouvais utiliser le pilote Java. –