Неожиданный конец ввода JSON в MongoDB Compass

Я хочу импортировать данные типа JSON в компас MongoDB, функция импорта выдает эту ошибку "неожиданный конец ввода JSON"

Неожиданный конец ввода JSON в MongoDB Compass

есть некоторые из моих файлов JSON

[
   {
      "id":4,
      "user":"[email protected]",
      "date1":"2019-03-01",
      "date2":"2019-04-01",
      "statut":"Good",
      "guest_number":4
   }
]
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
22
0
18 915
12
Перейти к ответу Данный вопрос помечен как решенный

Ответы 12

Структура вашего 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 будет импортировать вас нормально.

@KristoffDT Вы пробовали, прежде чем проголосовать за меня? Попробуйте, прежде чем минусовать кого-то. Ваше решение не работает. Я исправляю его документ, помещая двойные кавычки, объясняю проблему и проверяю ее. Мое решение работает.

Schwarz54 15.05.2019 16:18

Правильно, я не поторопился, но одинарные кавычки никогда не будут работать с json. Я удалил свой голос против, извините за это

KristoffDT 15.05.2019 16:19
Ответ принят как подходящий

решение состоит в том, чтобы написать все JSON в одну строку, но если у нас есть большой документ !! Я только что нашел решение, что я могу импортировать данные с помощью этой команды в терминале:

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

Как я могу подключиться к удаленной БД

Rahul Mahadik 11.06.2019 13:43

@RahulMahadik вы можете указать --uri параметр строки подключения для удаленной базы данных. docs.mongodb.com/manual/reference/program/mongoimport/…

Mathias 30.01.2020 15:04

Для меня json не было в массиве. Так что пришлось удалить --jsonArray.

Mathias 30.01.2020 15:06

Я получил ошибку "точка с запятой Missin" при выполнении этого.

none 06.03.2022 20:16

Вы также можете использовать командную строку 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 записей, работает как шарм. Спасибо!

Mani 31.12.2019 16:54

У меня была аналогичная проблема, но оказалось, что это дополнительные переводы строки в конце файла. Их удаление устранило проблему. Я предлагаю открыть ваш файл в редакторе, который показывает переводы строк, например. Блокнот++

Этот ответ здесь Решение решил проблему для меня. Кажется, это проблема форматирования.

Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится.

DjSh 19.11.2019 21:29

Запустите эту команду в cmd, и путь cmd должен находиться в той же папке, где находится файл JSON.

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

В чем причина повторения того же ответа, который уже принят?

OAH 18.12.2019 09:05

Просто скопируйте содержимое вашего файла json, затем в Mongodb Compass выберите свою базу данных, затем нажмите «Добавить данные», которая выпадет, затем нажмите «Вставить документ», появится диалоговое окно, затем вставьте его туда и нажмите «Вставить».

Это проблема с символами конца строки (EOL).

В среде Windows окончанием строки обычно является CR NL (\r\n), в то время как MongoDB Compass поддерживает только CR (\r).

Вы можете открыть файл в Notepad++, включить переключатель «Показать все символы» на панели инструментов и проверить текущий символ конца строки.

Чтобы устранить проблему, выберите «Правка» > «Преобразование EOL» > «Macintosh (CR)».

Хороший. Работал отлично без минимизации или иного удаления разрывов строк.

smoore4 28.04.2020 22:52

Добавьте --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.

Источник

Другие вопросы по теме