2012-06-22 2 views
0

Я пытаюсь разобрать данные JSON. Данные представляют собой массив с объектами внутри него. Это массив JSON я получаю от URL:iOS5: невозможно прочитать значение из JSON с помощью NSJSONSerialization

["{content:Airfare}", 
"{content:Dues \/ Subscriptions}", 
"{content:Education \/ Training}", 
"{content:Entertainment}", 
"{content:GS-OCWD}", 
"{content:GS-OCWE}", 
"{content:GS-Shift A}", 
"{content:GS-Shift B}", 
"{content:GS-Shift C}", 
"{content:Ground Transportation}", 
"{content:Legal Fees}", 
"{content:Lodging}", 
"{content:Meals}", 
"{content:Mileage}", 
"{content:Office Supplies}", 
"{content:Other Expenses}", 
"{content:Prof. Dues & Memberships}", 
"{content:Rental Car}", 
"{content:Telephone}", 
"{content:Telephone \/ Internet}", 
"{content:Tolls \/ Parking}"] 

Это код для синтаксического анализа массива JSON в моем .m файл

NSError *error = nil; 
    NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://localhost:8080/de.vogella.jersey.final/rest/notes"]];  


    NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: jsonData options: NSJSONReadingMutableContainers error: &error]; 

    if (!jsonArray) { 
     NSLog(@"Error parsing JSON: %@",error); 
    } else { 
     for(NSDictionary *item in jsonArray) { 
      NSLog(@"Item: %@", [item objectForKey:@"content"]); 
      [_identificationTypes1 addObject:item]; 
     } 

    } 

Когда линия NSLog(@"Item: %@", [item objectForKey:@"content"]); выполняется сбои приложения и дает ошибку [__NSCFString objectForKey:]: unrecognized selector. Он не может прочитать ключевой контент. Если я изменил строку на NSLog(@"Item: %@", item);, я могу увидеть все значения, такие как {content:Airfare}. Мне просто нужна стоимость авиабилетов. Может кто-нибудь мне помочь

Это код для создания JSON. Я использую Джерси и JAVA. Можете ли вы помочь мне в формате JSON с URL-адресом? Это мой DAO код:

public JSONArray getAllNotes() 
    { 
     PreparedStatement prepStmt = null; 
     List<Note> notes = new ArrayList<Note>(); 
     try { 
      String cSQL = "SELECT EXPENDITURE_TYPE FROM PA_ONLINE_EXPENDITURE_TYPES_V; 
      prepStmt = connection.prepareStatement(cSQL); 
      ResultSet result = prepStmt.executeQuery(); 
      while (result.next()) 
      { 
       Note note = new Note(); 
       //note.setNoteId(result.getInt(1)); 
       note.setContent(result.getString(1)); 
       //note.setCreatedDate(new java.util.Date(result.getDate(3).getTime())); 
       notes.add(note); 
      } 
      return new JSONArray(notes); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
      prepStmt = null; 
      return null; 
     } 
    }      

Это метод POJO:

@Override 
     public String toString() { 
      //return "{Content:"+content+"}" ; 
      return "ExpType [content=" + content + "]"; 
     }  

Это метод, который вызывает метод DAO:

@GET 

@Produces({MediaType.APPLICATION_JSON}) 
     public JSONArray getNotes() { 
      return dao.getAllNotes(); 
     }  

ответ

0

Ваш JSON не так. Это всего лишь массив строк, и именно поэтому вы получаете эту ошибку. На самом деле это должно быть так:

[{"content":"Airfare"}, 
{"content":"Dues \/ Subscriptions"}, 
{"content":"Education \/ Training"}, 
... etc] 
+0

Как вы создаете правильный формат? Можете ли вы мне помочь? Я новичок в этом – user1342592

+0

. Я пытаюсь сказать, что проблема заключается в ответе, который вы получаете от вашего URL-адреса. В вашем случае виновником является формат JSON, который вы получаете от 'http: // localhost: 8080/de.vogella.jersey.final/rest/notes'. В коде objc нет ничего плохого. – Alladinian

+0

Можете ли вы помочь мне в формате JSON с URL-адресом? Это мой код DAO – user1342592

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