Я хочу импортировать данные типа JSON в компас MongoDB, функция импорта выдает эту ошибку "неожиданный конец ввода JSON"
есть некоторые из моих файлов JSON
[
{
"id":4,
"user":"[email protected]",
"date1":"2019-03-01",
"date2":"2019-04-01",
"statut":"Good",
"guest_number":4
}
]

Структура вашего JSON неверна, вы можете прочитать информацию о Стандарты JSON
A value can be a string in double quotes, or a number, or true or false or null, or an object or an array. These structures can be nested.
попробуйте использовать двойные кавычки вместо одинарных:
Валидаторы JSON также могут помочь вам
[
{
"id" : 4,
"user" : "[email protected]",
"date1" : "2019-03-01",
"date2" : "2019-04-01",
"statut" : "Good",
"guest_number" : 4
}
]
У меня была эта проблема 6 месяцев назад, решение - записать все JSON в одну строку.
[{"id":4,"user":"[email protected]","date1":"2019-03-01","date2":"2019-04-01","statut":"Good","guest_number":4}]
MongoDB Compass скажет вам:
Import success!
Но документ точно не появится в вашей коллекции, так что лучше используйте Robo3T, если собираетесь вставлять json. Затем вы можете снова использовать Компас, как я. Это странно, да, но другого решения я пока не нашел.
[ОБНОВИТЬ]
Я импортирую данные с помощью Compass, но сначала экспортирую документ из Compass, чтобы посмотреть, как он пишет 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]"}
Он выглядит иначе, чем json в Интернете, который я опубликовал в своем первом посте. (посмотрите, например, на этот objectId "$oid"). Так что, если вы будете следовать этому шаблону, Compass будет импортировать вас нормально.
Правильно, я не поторопился, но одинарные кавычки никогда не будут работать с json. Я удалил свой голос против, извините за это
решение состоит в том, чтобы написать все JSON в одну строку, но если у нас есть большой документ !! Я только что нашел решение, что я могу импортировать данные с помощью этой команды в терминале:
mongoimport --jsonArray --db YourDatabase --collection YourCollection --file Yourfile.json
Как я могу подключиться к удаленной БД
@RahulMahadik вы можете указать --uri параметр строки подключения для удаленной базы данных. docs.mongodb.com/manual/reference/program/mongoimport/…
Для меня json не было в массиве. Так что пришлось удалить --jsonArray.
Я получил ошибку "точка с запятой Missin" при выполнении этого.
Вы также можете использовать командную строку mongodb следующим образом:
db.user.insert(
[
{
"id" : 4,
"user" : "[email protected]",
"date1" : "2019-03-01",
"date2" : "2019-04-01",
"statut" : "Good",
"guest_number" : 4
},
{
"id" : 5,
"user" : "[email protected]",
"date1" : "2019-03-01",
"date2" : "2019-04-01",
"statut" : "Good",
"guest_number" : 4
}
]
Эта ошибка синтаксического анализа может быть решена с помощью минификации. Итак, минимизируйте json следующим образом. Хотя, это довольно лихорадочный процесс, чтобы сделать это для каждого объекта.
{
"_id" : "123456",
"name" : "stackoverflow"
}
изменить на:
{"_id":"123456","name":"stackoverflow"}
Эта ошибка синтаксического анализа может быть решена с помощью минификации. Итак, минимизируйте json следующим образом. Хотя, это довольно лихорадочный процесс, чтобы сделать это для каждого объекта.
И такая минификация сработала для меня.
{
"_id" : ObjectId("5b9ecf9a64f634289ca895bb"),
"name" : "Mark"
}
{
"_id" : ObjectId("5b9edd9064f634289ca895e4"),
"name" : "David"
}
К :
{"_id":"ObjectId(\"5b9ecf9a64f634289ca895bb\")","name":"Mark"}
{"_id":"ObjectId(\"5b9edd9064f634289ca895e4\")","name":"David"}
использовал его для импорта файла с более чем 10 000 записей, работает как шарм. Спасибо!
У меня была аналогичная проблема, но оказалось, что это дополнительные переводы строки в конце файла. Их удаление устранило проблему. Я предлагаю открыть ваш файл в редакторе, который показывает переводы строк, например. Блокнот++
Этот ответ здесь Решение решил проблему для меня. Кажется, это проблема форматирования.
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится.
Запустите эту команду в cmd, и путь cmd должен находиться в той же папке, где находится файл JSON.
mongoimport --jsonArray --db YourDatabase --collection YourCollection --file Yourfile.json
В чем причина повторения того же ответа, который уже принят?
Просто скопируйте содержимое вашего файла json, затем в Mongodb Compass выберите свою базу данных, затем нажмите «Добавить данные», которая выпадет, затем нажмите «Вставить документ», появится диалоговое окно, затем вставьте его туда и нажмите «Вставить».
Это проблема с символами конца строки (EOL).
В среде Windows окончанием строки обычно является CR NL (\r\n), в то время как MongoDB Compass поддерживает только CR (\r).
Вы можете открыть файл в Notepad++, включить переключатель «Показать все символы» на панели инструментов и проверить текущий символ конца строки.
Чтобы устранить проблему, выберите «Правка» > «Преобразование EOL» > «Macintosh (CR)».
Хороший. Работал отлично без минимизации или иного удаления разрывов строк.
Добавьте --jsonFormat=canonical в свой скрипт mongoexport:
mongoexport --db=quotes --collection=quotes --jsonFormat=canonical --out=data/quotes.json
JSON can only directly represent a subset of the types supported by BSON. To preserve type information, MongoDB adds the following extensions to the JSON format.
@KristoffDT Вы пробовали, прежде чем проголосовать за меня? Попробуйте, прежде чем минусовать кого-то. Ваше решение не работает. Я исправляю его документ, помещая двойные кавычки, объясняю проблему и проверяю ее. Мое решение работает.