2013-12-19 3 views
0

Это может быть очень простой ответ, но я не могу найти хороший учебник, чтобы помочь мне. Я пытаюсь разобрать JSON строку, что я вернулся из HTTP POST строка JSON выглядит так, когда я вхожу его:разобрать простую строку json без имени объекта

(
     { 
     "ADD_CITY" = BEDFORD; 
     "ADD_LINE1" = "100 COURT AVE"; 
     "ADD_LINE2" = ""; 
     "ADD_STATE" = IA; 
     "ADD_ZIP" = 50833; 
     "BUSINESS_NAME" = ""; 
     "FIRST_NAME" = JOHN; 
     "LAST_NAME" = DOE; 
    }, 
     { 
     "ADD_CITY" = BEDFORD; 
     "ADD_LINE1" = "101 COURT AVE"; 
     "ADD_LINE2" = ""; 
     "ADD_STATE" = IA; 
     "ADD_ZIP" = 50833; 
     "BUSINESS_NAME" = ""; 
     "FIRST_NAME" = BOB; 
     "LAST_NAME" = JOHNSON; 
    } 
) 

Я пытаюсь сделать так, что я могу вставить каждое значение каждого места в coredata, который я сделал, но я заставляю его разбираться во что-то, с чем я могу работать. Я прочитал, что мне нужно что-то сделать с помощью NSJSONSerialization.

редактировать

-(void)getLocations{ 
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
NSDictionary *parameters = @{@"code": @"123"}; 
[manager POST:@"website.com/getjson" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"JSON: %@", responseObject); 
    response = responseObject; 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}]; 
} 
+0

Это не JSON вообще. Если бы он просто менял '(...)' на '[...]', это было бы легко исправить, но оно имеет ряд других отклонений: используя '=' вместо ':', используя '; 'вместо', 'и с использованием некотируемых строк. Вам придется написать собственный парсер. – ikegami

+2

Это «описание» объекта, который вы получили от вашего JSON после десериализации («NSArray» в этом случае содержит два 'NSDictionaries'). Просто перечислите его, и вам будет хорошо идти ... – Alladinian

+0

Это NSArray из двух NSDictionaries. Какая у вас проблема с этим? –

ответ

0

AFNetworking уже сделал это для вас (десериализация из JSON). Таким образом, вы можете просто перечислить и создать свои объекты соответственно для хранения в CoreData.

-(void)getLocations{ 
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    NSDictionary *parameters = @{@"code": @"123"}; 
    [manager POST:@"website.com/getjson" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"JSON: %@", responseObject); 
     response = responseObject; 

     for (NSDictionary *obj in responseObject) { 
      // Create any objects for Coredata here 
     } 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 
    }]; 
} 
+0

hmm Я не понимал, что это уже сделано для меня. Удивительно, я думаю, что могу это получить отсюда! Спасибо, что объяснил мне это – BluGeni

+0

@BluGeni Не беспокойтесь. Рад, что помогло вам – Alladinian

0

Да. NSJsonSerialization выполняет эту работу. Он преобразует json в NSDictionary.

This дает прекрасный пример.

+1

Ну, в этом случае он превратил JSON в NSArray (из NSDictionaries). То, что вы получаете, это то, что находится в JSON - это не всегда одно и то же. –

+0

Итак, в этом случае, как бы я сказал, напечатайте/запишите первое имя первого результата? – BluGeni

+0

У вас есть набор словарей. NSDictionary * firstEntry = [parsedjson objectAtIndex: 1]; NSLog (@ "% @", [firstEntry objectForKey: @ "FIRST_NAME"]; –

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