2015-09-03 4 views
4

Как преобразовать список объектов в JSON? Я искал в Интернете, но все методы, которые я использовал, я ошибаюсь. Мне нужно, чтобы превратить объект Coll в строку JSONОт объекта к json

Collections *current = _raccolte[_currentCell]; 
current.label = [[alertView textFieldAtIndex:0] text]; 
current.datetime_last_update = [NSNumber numberWithDouble:[[NSDate date] timeIntervalSince1970]]; 

NSMutableArray *coll = [[NSMutableArray alloc] init]; 
[coll addObject:current]; 
HttpClient *client = [[HttpClient alloc] init]; 
[client syncCollection:coll]; 

ответ

1

Вы используете NSJSONSerialization класс для преобразования JSON в объекты Foundation и преобразовывать объекты Foundation в формате JSON.

Здесь вы можете проверить его Link

Collections *current = _raccolte[_currentCell]; 
current.label = [[alertView textFieldAtIndex:0] text]; 
current.datetime_last_update = 
[NSNumber numberWithDouble:[[NSDate date] timeIntervalSince1970]]; 

NSMutableArray *coll = [[NSMutableArray alloc] init]; 
[coll addObject:current.label]; 
[coll addObject:current.datetime_last_update]; 

NSError *writeError = nil; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:coll 
                options:NSJSONWritingPrettyPrinted 
                error:&writeError]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData 
              encoding:NSUTF8StringEncoding]; 

NSLog(@"JSON Output: %@", jsonString); 
+0

вместо NSArray * coll = [NSArray arrayWithObjects: current.label, current.datetime_last_update]; я должен передать список объектов, NSMutableArray * coll –

+0

вы также можете использовать 'NSMutableArray' @FlavioMerolli только для информации, которую я использовал' Array' .check мой отредактированный ответ –

+0

с использованием 'NSArray * coll = [NSArray arrayWithObjects: collection] ; '. коллекция NSMutableArray i get Thread 1: EXC_BAD_ACCESS отсутствует отправитель в отправке метода –

1

Есть много вопросов о JSon серийности: iOS JSON serialization for NSObject-based classes

Основная идея заключается в преобразовании объекта в NSDictionary, а затем преобразовать его в jsonData и (если необходимо) в строку.

В вашем случае вам нужно создать NSArray из NSDictionaries затем передать его метод, как:

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array 
                options:NSJSONWritingPrettyPrinted 
                error:&writeError]; 

Затем, если вам нужна строка, что вам нужно сделать что-то вроде:

NSString* jsonString = [[NSString alloc] initWithData:jsonData 
              encoding:NSUTF8StringEncoding]; 
1

Во-первых, у вас есть чтобы объекты вашей коллекции были сериализованы. Вы можете добиться этого, сделав свой объект Collections совместимым с протоколом NSCoding. Это требует реализации двух основных методов: (instancetype)initWithCoder:(NSCoder *)aDecoder и void)encodeWithCoder:(NSCoder *)aCoder.

Тогда вы можете просто использовать следующий обработчик статический метод

- (NSString*)convertObjectToJson:(NSObject *)object { 
    NSError *error = nil; 

    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object 
                 options:NSJSONWritingPrettyPrinted 
                 error:&error]; 
    NSString *result = [[NSString alloc] initWithData:jsonData 
              encoding:NSUTF8StringEncoding]; 
    return result; 
} 

Это относится как для собственных Collections экземпляров и NSMutableArray, то есть NSCoding -совместимый по умолчанию.

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