Разбор плохо сформированного JSON в target-C - PullRequest
0 голосов
/ 09 февраля 2012

Моя задача - проанализировать некоторый JSON, который был создан путем запуска инструмента преобразования XML в JSON в XML WADL. Я могу проанализировать данные, возвращенные в ответе, в JSON, и я могу получить NSDictionary верхнего уровня из данных. Я могу получить массив из словаря и NSDictionary из массива (он включает в себя значение ключа, но это так), и это так глубоко, как я могу пойти. Я делал анализ в прошлом, но этот конкретный формат JSON мне не повезло? Вот код, который я использую ..

// Decode the data
NSError *parseError = nil;
NSData *jsonData = [request responseData];
NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&parseError];
if (parseError) {
    NSLog(@"Error: %@", [parseError localizedDescription]);

    // other stuff..
    return;
}

NSLog(@"JSON=: %@", responseDict.description);
NSArray *messageBoxResponse = [responseDict objectForKey:@"messageBoxResponse"];
NSLog(@"messageBoxResponse=: %@", messageBoxResponse);
NSUInteger count = messageBoxResponse.count;
for (NSDictionary* messages in messageBoxResponse) {

    NSLog(@"Messages=: %@", messages.description);
    NSArray *message = [messages objectForKey:@"message"];

    // get SIGABRT
    count = message.count;

    // If I comment out above line and introduce this I get SIGABRT also
    for (NSDictionary* something in message) {
        NSLog(@"Somthing=: %@", something.description);


}

Вот JSON, который я пытаюсь проанализировать. IP-адреса были изменены:):

{
messageBoxResponse =     {
    messages =         {
        link =             {
            href = "http://1.1.1.1:80/services/messageboxes/63358/messages";
            rel = self;
        };
        message =             (
                            {
                flags =                     {
                    answered = 0;
                    link =                         {
                        href = "http://1.1.1.1:80/services/messageboxes/63358/messages/<4F3131A3.6040204@sc-msg1-msg.sc.sc>/flags";
                        rel = self;
                    };
                    taggedForDeletion = 0;
                    unread = 0;
                };
                from = "Suren.1@sc-msg1-msg.sc.sc";
                link =                     {
                    href = "http://1.1.1.1:80/services/messageboxes/63358/messages/<4F3131A3.6040204@sc-msg1-msg.sc.sc>";
                    rel = self;
                };
                parts =                     {
                    link =                         {
                        href = "http://1.1.1.1:80/services/messageboxes/63358/messages/<4F3131A3.6040204@sc-msg1-msg.sc.sc>/parts";
                        rel = self;
                    };
                    part =                         {
                        link =                             {
                            href = "http://1.1.1.1:80/services/messageboxes/63358/messages/<4F3131A3.6040204@sc-msg1-msg.sc.sc>/parts/0";
                            rel = self;
                        };
                        mimeType = "TEXT/PLAIN";
                        name = "text.txt";
                        size = 564;
                    };
                };
                receivedDate = 1328624061000;
                sentDate = 1328624035000;
                subject = test;
            },
                            {
                flags =                     {
                    answered = 0;
                    link =                         {
                        href = "http://1.1.1.1:80/services/messageboxes/63358/messages/<24346739.35.1328562602976.JavaMail.mango@sc-msg1-msg.sc.sc>/flags";
                        rel = self;
                    };
                    taggedForDeletion = 0;
                    unread = 0;
                };
                from = "Suren.1@sc-msg1-msg.sc.sc";
                link =                     {
                    href = "http://1.1.1.1:80/services/messageboxes/63358/messages/<24346739.35.1328562602976.JavaMail.mango@sc-msg1-msg.sc.sc>";
                    rel = self;
                };
                parts =                     {
                    link =                         {
                        href = "http://1.1.1.1:80/services/messageboxes/63358/messages/<24346739.35.1328562602976.JavaMail.mango@sc-msg1-msg.sc.sc>/parts";
                        rel = self;
                    };
                    part =                         (
                                                    {
                            link =                                 {
                                href = "http://1.1.1.1:80/services/messageboxes/63358/messages/<24346739.35.1328562602976.JavaMail.mango@sc-msg1-msg.sc.sc>/parts/0";
                                rel = self;
                            };
                            mimeType = "TEXT/PLAIN";
                            name = "text.txt";
                            size = 6;
                        },
                                                    {
                            content =                                 {
                                href = "http://1.1.1.1:80/services/messageboxes/63358/messages/<24346739.35.1328562602976.JavaMail.mango@sc-msg1-msg.sc.sc>/parts/1/2c3a3400620f218d5378607260dc2749.wav";
                                rel = content;
                            };
                            duration = 3;
                            link =                                 {
                                href = "http://1.1.1.1:80/services/messageboxes/63358/messages/<24346739.35.1328562602976.JavaMail.mango@sc-msg1-msg.sc.sc>/parts/1";
                                rel = self;
                            };
                            mimeType = "AUDIO/WAV";
                            name = "Audio_Recording_S000551_002.wav";
                            size = 31190;
                        },
                                                    {
                            link =                                 {
                                href = "http://1.1.1.1:80/services/messageboxes/63358/messages/<24346739.35.1328562602976.JavaMail.mango@sc-msg1-msg.sc.sc>/parts/2";
                                rel = self;
                            };
                            mimeType = "APPLICATION/MS-TNEF";
                            name = "winmail.dat";
                            size = 656;
                        }
                    );
                };
                receivedDate = 1328562604000;
                sentDate = 1328562596000;
                subject = "Voice Message from Suren 1 (63357)";
            }
        );
    };
};

}

1 Ответ

0 голосов
/ 09 февраля 2012

Это потому, что JSON не является действительным.Это должно выглядеть примерно так:

{
    "messages": {
        "link": {
            "href": "http: //1.1.1.1: 80/services/messageboxes/63358/messages",
            "rel": "self"
        }
    }
}

'=' должен быть ':' есть точки с запятой, которых не должно быть.

...