JSONПредставление модели данных NSObject - PullRequest
0 голосов
/ 09 декабря 2011

Я пытаюсь проанализировать все данные, которые я заполнил в моей модели данных. У меня есть некоторые nsmutabledictionary внутри nsobject, и просто любопытно, возможно ли получить jsonrepresentation этого типа объекта? Я получил недопустимый тип для JSON, используя ASIHTTPREQUEST. Таким образом, очевидная проблема здесь заключается в том, если это возможно, или мне нужно перебрать объект и вставить его в nsdictionary, а затем проанализировать его?

Спасибо

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Возможно, вы захотите проверить мою реализацию для сериализации NSObjects в JSON и наоборот - https://github.com/QBurst/KVCObjectSerializer

1 голос
/ 09 декабря 2011

Трудно полностью ответить на ваш вопрос, не зная больше об объектах, которые вы пытаетесь сериализовать в JSON, но не сложно объяснить, какие объекты можно сериализовать (если вы используете TouchJSON).Если вы посмотрите на метод -isValidJSONObject в CJSONSerializer.m , вы увидите, какие именно классы можно сериализовать:

- (BOOL)isValidJSONObject:(id)inObject
    {
    if ([inObject isKindOfClass:[NSNull class]]) { return(YES); }
    else if ([inObject isKindOfClass:[NSNumber class]]) { return(YES); }
    else if ([inObject isKindOfClass:[NSString class]]) { return(YES); }
    else if ([inObject isKindOfClass:[NSArray class]]) { return(YES); }
    else if ([inObject isKindOfClass:[NSDictionary class]]) { return(YES); }
    else if ([inObject isKindOfClass:[NSData class]]) { return(YES); }
    else if ([inObject respondsToSelector:@selector(JSONDataRepresentation)])
    {
        return(YES);
    }
    else
    {
        return(NO);
    }
}

(код переформатирован для ясности.)

Итак, вы можете видеть, что NSNULL, NSNumber, NSString, NSArray, NSDictionary и NSData все сериализуемы в JSON, и что любой класс, реализующий -JSONDataRepresentation, также сериализуем.

На основеошибка «Недопустимый тип для JSON», которую вы, очевидно, получаете, я предполагаю, что по крайней мере один из объектов на вашем графике не входит в число перечисленных выше, и вы, вероятно, захотите внедрить -JSONDataRepresentation всоответствующий класс (ы).

Обновление: Из вашего комментария я вижу, что вы используете SBJSON вместо TouchJSON. Эта страница содержит список типов, поддерживаемых SBJSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...