2016-03-30 2 views
0

Я вынимаю данные из базы данных Mongodb. Мне нужно получить доступ к определенным элементам данных, но мне не повезло. Я могу распечатать весь объект и увидеть его структуру, но при попытке доступа к объектам внутри объекта JSON я получаю исключение; исключение брошено org.json.JSONException: JSONObject ["forms"] не найден. Я не смог разобраться в этом вопросе, любая помощь была бы весьма признательна. Вот объект JSON и код, я использую, чтобы разобрать его:У меня возникли проблемы с доступом к элементам в объекте JSON в JAVA

{"_id":{"$oid":"56ec24fce4b0322e5e267fc4"} 
, "dateModified":{"$numberLong":"1458316466081"} 
, "id":"56ec24aae4b0322e5e267e41" 
, "projectLabel":"CLT119-050-002" 
, "projectId":"CLT119-050-002" 
, "clientFile":"DEC_5.3.client" 
, "clientFileVersion":"9ce6fad040358033c98db66c7ea80fe8" 
, "calcLocation":{"label":"19NC59" 
, "mapNumber":"" 
, "comments":"" 
, "address":{"number":"2120" 
, "street":"N DAVIDSON ST" 
, "city":"CHARLOTTE" 
, "county":"MECKLENBURG" 
, "state":"NC" 
, "zip_code":"28206"} 
, "technician":"F PIERCE" 
, "crossStreet1":"" 
, "crossStreet2":"" 
, "geographicCoordinate":{"type":"Point" 
, "coordinates":[-80.81569166666667 
, 35.23912333333333 
, 238.3]} 
, "remedies":[{"description":"TWC: At 20' 6\" lower 0' 6\" to 20' 0\""} 
, {"description":"AT&T: At 21' 1\" lower 1' 1\" to 19' 0\" span NorthWest"} 
, {"description":"GFI: Attach at 18' 0\""}] 
, "poleTags":[] 
, "userDefinedValues":{} 
, "summaryNotes":["At Pole Clearance Violation"] 
, "forms":[ 
, {"title":"Billing Code (Client)" 
, "template":"9ce6fad040358033c98db66c7ea80fe8-Billing Code (Client)" 
, "fields":{"Billing Code":"Remedy Pole" 
, "Data Collection":"Select One" 
, "2nd Trip Fee":"false" 
, "ReEngineered":"false" 
, "2nd ReEngineered":"false" 
, "3rd ReEngineered":"false" 
, "Comments":""}}] 
, "images":[{"url":"19NC59-1.jpg" 
, "link":{"id":"f931f69c-0748-433e-b186-31cc04abd9a1" 
, "source":"filefortAssetService"}} 
, {"url":"19NC59-2.jpg" 
, "link":{"id":"e3517acf-ff79-4ad8-ba33-fac6e75f0c80" 
, "source":"filefortAssetService"}} 
, {"url":"19NC59-3.jpg" 
, "link":{"id":"ecf92caf-c5ff-4d68-b84a-14805186bab9" 
, "source":"filefortAssetService"}}] 
, "designs":[{"id":"56ec24aae4b0322e5e267e3e" 
, "label":"Existing"} 
, {"id":"56ec24aae4b0322e5e267e3f" 
, "label":"Proposed"} 
, {"id":"56ec24aae4b0322e5e267e40" 
, "label":"Remedy"}] 
, "id":"56ec24aae4b0322e5e267e41"} 
, "user":{"id":"0" 
, "email":"[email protected]"}} 

код:

FindIterable<Document> iterable = db.getCollection("locations").find(new Document("projectLabel", "CLT119-050-002")); 
    iterable.forEach(new Block<Document>() { 
     @Override 
     public void apply(final Document document) { 
      try{ 
       JSONObject json = new JSONObject(document.toJson()); 
       JSONArray forms = json.getJSONArray("forms");  
      }catch(Exception e){ 
       System.out.println(e); 
      } 
     } 

объект JSON имеет данные в нем пытаются заселить JSONArray бросает исключение.

+1

Ваш json кажется недействительным. Вы можете проверить это здесь: http: //jsonlint.com/ – SearchAndResQ

ответ

0

Дело в том, что объект, который вы пытаетесь получить, calcLocation.forms не просто формы.

+0

Вы правы, я полностью пропустил гнездование. Спасибо Майку – Lennie

Смежные вопросы