web-dev-qa-db-fra.com

Fin inattendue de l'entrée JSON dans MongoDB Compass

Je souhaite importer des données de type json dans la boussole MongoDB, la fonction d'importation donne cette erreur "fin inattendue de l'entrée json"

enter image description here

il y a une partie de mon fichier json

[

    {
    'id' :4,
    'user' : '[email protected]',
    'date1' :'2019-03-01',
    'date2' : '2019-04-01',
    'statut' : 'Good',
     'guest_number' : 4
    }
]
16
OAH

la solution est d'écrire tous les JSON sur une seule ligne, mais si nous avons un gros doc !! Je viens de trouver une solution que je peux importer des données avec cette commande dans le terminal:

mongoimport --jsonArray --db YourDatabase --collection YourCollection --file Yourfile.json
15
OAH

J'ai eu ce problème il y a 6 mois, la solution est d'écrire tous les JSON sur une seule ligne. [{"id":4,"user":"[email protected]","date1":"2019-03-01","date2":"2019-04-01","statut":"Good","guest_number":4}]

MongoDB Compass vous dira:

Importation réussie!

Mais le document n'apparaîtra certainement pas dans votre collection, il vaut donc mieux utiliser Robo3T si vous voulez insérer json. Ensuite, vous pouvez réutiliser Compass comme je le fais. C'est bizarre, oui, mais je n'ai pas encore trouvé d'autre solution.

[MISE À JOUR]

J'obtiens des données d'importation avec Compass, mais j'exporte d'abord un document depuis Compass pour voir comment il écrit le json.

{"_id":{"$oid":"5e4cf105c9ba1a21143d04a2"},"tPreguntas":["Pregunta 1","Pregunta 2","Pregunta 3","Pregunta 4","Pregunta 5"],"tCategorias":[],"tPublico":true,"tFechaCreacion":{"$date":{"$numberLong":"1582100741716"}},"tCodigo":"test1","tTitulo":"Test 1","tDescripcion":"Test de muestreo número uno para comprobar.","tCreadoPor":"[email protected]"}

Il semble différent du json en ligne que j'ai posté dans mon premier post. (regardez cet objectId "$ oid" par exemple). Donc, si vous suivez ce modèle, Compass vous importera très bien.

7
Schwarz54

Cette erreur d'analyse peut être résolue à l'aide de la minification. Donc, minimisez json comme ça. Bien que cela soit assez difficile à faire pour chaque objet.

Et ce genre de minification comme ça a fonctionné pour moi.

{ 
    "_id" : ObjectId("5b9ecf9a64f634289ca895bb"), 
    "name" : "Mark"
}
{ 
    "_id" : ObjectId("5b9edd9064f634289ca895e4"), 
    "name" : "David"
}

À :

{"_id":"ObjectId(\"5b9ecf9a64f634289ca895bb\")","name":"Mark"}
{"_id":"ObjectId(\"5b9edd9064f634289ca895e4\")","name":"David"}
5
prisar

Cette erreur d'analyse peut être résolue à l'aide de la minification. Donc, minimisez json comme ça. Bien que cela soit assez difficile à faire pour chaque objet.

{
"_id" : "123456",
"name" :  "stackoverflow"
}

changer en:

{"_id":"123456","name":"stackoverflow"}
2

Copiez simplement le contenu de votre fichier json puis dans Mongodb Compass sélectionnez votre base de données puis cliquez sur Ajouter des données qui déroulera puis cliquez sur insérer un document une boîte de dialogue apparaît, puis collez-la et cliquez sur insérer.

1
nivla360

Ajouter --jsonFormat=canonical à votre script mongoexport:

mongoexport --db=quotes --collection=quotes  --jsonFormat=canonical --out=data/quotes.json

JSON ne peut représenter directement qu'un sous-ensemble des types pris en charge par BSON. Pour conserver les informations de type, MongoDB ajoute les extensions suivantes au format JSON.

Source

0

La structure de votre JSON est incorrecte, vous voudrez peut-être lire les informations concernant normes JSON

Une valeur peut être une chaîne entre guillemets , ou un nombre, ou vrai ou faux ou nul, ou un objet ou un tableau. Ces structures peuvent être imbriquées.

essayez d'utiliser des guillemets doubles au lieu de simples:

Les validateurs JSON pourraient également vous aider

[
    {
     "id" : 4,
     "user" : "[email protected]",
     "date1" : "2019-03-01",
     "date2" : "2019-04-01",
     "statut" : "Good",
     "guest_number" : 4
    }
]
0
KristoffDT

Cette réponse ici Solution a résolu le problème pour moi. Cela semble être un problème de formatage.

0
Oladayo agbolade

C'est un problème avec les caractères de fin de ligne (EOL).

Dans un environnement Windows, les terminaisons de ligne sont normalement CR NL (\ r\n), tandis que MongoDB Compass ne semble prendre en charge que CR (\ r).

Vous pouvez ouvrir le fichier dans Notepad ++, activer la bascule "Afficher tous les caractères" dans la barre d'outils et inspecter votre caractère de fin de ligne actuel.

Pour résoudre le problème, sélectionnez Edition> Conversion EOL> Macintosh (CR).

0
vi3x

J'ai eu un problème similaire, mais il s'est avéré qu'il s'agissait de sauts de ligne supplémentaires à la fin du fichier. Leur suppression a résolu le problème. Je suggère d'ouvrir votre fichier dans un éditeur qui affiche des sauts de ligne, par exemple Bloc-notes ++

0
NickC