Я пытаюсь прочитать некоторые данные из файла JSON, сгенерированного из документа MongoDB. Но при попытке прочитать первую запись в документе я получаю исключение:
org.json.JSONException: JSONObject ["Uhrzeit"] не найден.
Это происходит только с первой записью, чтение других записей не вызывает исключений.
Использование jsonObject.getString("")
для любой записи, которая не является первой, возвращает значения, как и ожидалось.
//Initiate Mongodb and declare the database and collection
MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));
MongoDatabase feedbackDb = mongoClient.getDatabase("local");
MongoCollection<Document> feedback = feedbackDb.getCollection("RückmeldungenShort");
//gets all documents in a collection. "new Document()" is the filter, that returns all Documents
FindIterable<Document> documents = feedback.find(new Document());
//Iterates over all documents and converts them to JSONObjects for further use
for(Document doc : documents) {
JSONObject jsonObject = new JSONObject(doc.toJson());
System.out.print(jsonObject.toString());
System.out.print(jsonObject.getString("Uhrzeit"));
}
Печать jsonObject.toString()
создает строку JSON для тестирования (в одну строку):
{
"Ort":"Elsterwerda",
"Wetter-Keyword":"Anderes",
"Feedback\r":"Test Gelb\r",
"Betrag":"Gelb",
"Datum":"18.05.2018",
"Abweichung":"",
"Typ":"Vorhersage",
"_id":{
"$oid":"5b33453b75ef3c23f80fc416"
},
"Uhrzeit":"05:00"
}
Обратите внимание, что порядок, в котором появляются записи, перепутан, и первым в базе данных появился "Uhrzeit".
Вот как это выглядит:
Файл JSON действителен в соответствии с https://jsonformatter.curiousconcept.com/.
«Uhrzeit» даже распознается в JSONObject в режиме отладки:
Я предположил, что это может быть как-то связано с самими записями, поэтому я переключил «Datum» и «Ort» на первое место в документе, но это дало те же результаты.
Есть много других, которые опубликовали это сообщение об ошибке, но мне кажется, что у них всех были немного разные проблемы.