2012-05-15 1 views
0

я немного проблема JSON кодирования:SBJSON закодировать объект, который содержит массив другого объекта

мне нужно кодировать формат объекта JSON с SBJSON, прежде чем отправить его на сервер PHP В настоящее время этот образец кода работа:

NSArray *arrayData = [NSArray arrayWithObjects: 
         user.id == nil ? [NSNumber numberWithInt:-1] : user.id, 
         ProfessionField.text, NameField.text, RPPSField.text, RPPSField.text, 
         NameField.text, SurnameField.text, StreetField.text, 
         TownField.text, CpField.text, MailField.text, 
         PhoneField.text, FaxField.text, MobileField.text, 
        // [user.horaires JSONRepresentation], 
         nil]; 

NSArray *arrayKey = [NSArray arrayWithObjects: 
        @"id", @"spe", @"name", @"rpps", @"cip", 
        @"name", @"surname", @"rue", 
        @"ville", @"cp", @"mail", 
        @"tel", @"fax", @"port", 
        // @"horaires", 
        nil]; 

NSDictionary *dataBrut = [NSDictionary dictionaryWithObjects:arrayData forKeys:arrayKey]; 
NSDictionary *jsonDict = [NSDictionary dictionaryWithObject:dataBrut forKey:@"data"]; 
NSString *jsonRequest = [jsonDict JSONRepresentation]; 

проблема заключается в том, когда мне нужно отправить «user.horaires» (здесь в комментариях) CRASH Применение при представлении JSON этого объекта.

этот объект является массивом из следующего класса:

@interface Horaire : NSObject 
{ 
    BOOL morning; 
} 

@property (nonatomic, strong) NSNumber *id; 
@property (nonatomic, strong) NSString *open; 
@property (nonatomic, strong) NSString *close; 

Кто-то знает, как SucceS кодировать это?

ответ

1

Вы не должны включать представление JSON как элемент JSON. JSON не «удаляет» строковые данные очень хорошо, поэтому встроенный JSON (если только вы не «убегаете» от него) заставит синтаксический анализ задушить.

Вместо этого вы должны поместить словарь или массив, который использовался для создания представления JSON (например, «user.horair») в том месте, где вы показываете создаваемое и вставленное представление. Тогда вся структура будет JSON-кодирована за одну операцию.

Ie:

NSArray *arrayData = [NSArray arrayWithObjects: 
        user.id == nil ? [NSNumber numberWithInt:-1] : user.id, 
        ProfessionField.text, NameField.text, RPPSField.text, RPPSField.text, 
        NameField.text, SurnameField.text, StreetField.text, 
        TownField.text, CpField.text, MailField.text, 
        PhoneField.text, FaxField.text, MobileField.text, 
        user.horaires, 
        nil]; 
+0

я уже стараюсь Befor но ответить: JSONRepresentation не удалось. Ошибка: Сериализация JSON не поддерживается для Horaire IDK Почему причина моего массива объекта довольно проста –

+1

Ну, это тот объект, который представляет собой массив или словарь или какой-либо другой объект, реализующий собственный метод JSONRepresentation? –

+0

oh ok Я мечтал: p я реализую JSONRпредставление этого объекта, и теперь он отлично работает, –